Only a type can be imported. com.xxx.xxx.XXX resolves to a package 解决方法
一个小项目移到服务器上,发现以前的项目出错了,访问一个很简单的jsp也会报错,说无法编译,报的错误就是:Only a type can be imported. com.xxx.xxx.XXX resolves to a package,意思就是说你jsp页面上引用的那个类不存在,可是测试的时候却正常,其实这样JSP已经是访问到的了,只是找不到类,我想应该是路径有问题,是的,因为放在服务器中,为了方便管理,服务器管理员建多了个子目录,而tomcat的context没有改变,每一个子文件夹都会被tomcat当作一个独立的虚拟应用的,所以每个子文件夹下的jsp页面访问的时候,都会在它的同一层找WEB-INF里面的class,这样当然找不到了,只有刚巧放在根目录下的jsp文件能访问。
解决办法:打开%TOMCAT_HOME%conf\server.xml文件,如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/MyLab2/MyLab" docBase="D:\\Program Files\\Apache Software Foundation\\Tomcat 5.5\\webapps\\MyLab2\\MyLab" reloadable="true">
</Context>
</Host>
只要多加这个context就可以了,其中path为访问路径,docBase为项目文件根目录所在。这样应用的文件路径通过docBase来指定,这样就不会再产生找不到class的问题了。