博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Only a type can be imported解决方法
阅读量:5888 次
发布时间:2019-06-19

本文共 1450 字,大约阅读时间需要 4 分钟。

  hot3.png

这次项目开发,运行环境的tomcat版本从5.5.12升级到了6.0.18,发现以前的项目不能跑了,访问一个很简单的jsp也会报错,说无法编译,报的错误就是:Only a type can be imported. com.xxx.xxx.XXX resolves to a package,意思就是说你jsp页面上引用的那个类不存在,可是在老版本明明跑的好好的,而且另一个现象就是项目根目录下的jsp访问没有问题,子目录下就报错,google了一下,发现这是新版本tomcat的一个变化,就是如果不指定context的话,每一个子文件夹都会被tomcat当作一个独立的虚拟应用的,所以每个子文件夹下的jsp页面访问的时候,都会在它的同一层找WEB-INF里面的class,这样当然找不到了,只有刚巧放在根目录下的jsp文件能访问。

解决办法:其实这也是自己以前写tomcat的配置文件时候,写法不规范造成的,以前的server.xml里面host信息代码如下:

<Host name="" appBase="D://projects//myWebSite//WebContent" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

    <Alias>192.168.1.43</Alias> 
    <Context path="" docBase="" reloadable="true">
     <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="." suffix=".txt" timestamp="true"/>
    </Context></Host>

这其中Context里面的docBase为空,文件路径就靠Host里的appBase去指定,这样tomcat认为你这个站点下没有应用,会自动把每个文件夹当作一个虚拟应用处理。修改后的代码片段如下:

<Host name="" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

    <Alias>192.168.1.43</Alias> 
    <Context path="" docBase="D://projects//myWebSite//WebContent" reloadable="true">
     <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="." suffix=".txt" timestamp="true"/>
    </Context></Host>

可以看到Host里面不再指定appBase了,而是在主机下建立一个应用,应用的文件路径通过docBase来指定,这样就不会再产生找不到class的问题了。

ps:tomcat的这个问题好像是从5.5.28就开始了,记得以前也曾经尝试过升级tomcat,就发生了类似的问题,但是当时没充裕时间去解决,就一直把问题遗留到现在。

转载于:https://my.oschina.net/dyxp/blog/529526

你可能感兴趣的文章
Java的进程内缓存框架:EhCache (转)
查看>>
2018年4月13日,祝自己24岁生日快乐!
查看>>
实现一个涂抹擦除效果
查看>>
Unity PhysicsScene测试
查看>>
CSS行高——line-height
查看>>
WPF成长之路------翻转动画
查看>>
Html列表分页算法
查看>>
JS自学笔记03
查看>>
vim 加密(crypt)文本文档
查看>>
理解父类引用指向子类对象
查看>>
BZOJ-2763: [JLOI2011]飞行路线 (SPFA分层图)
查看>>
make、make clean、make install、make uninstall、make dist、make distcheck和make distclean
查看>>
华为内部面试题库---(5)
查看>>
JDK动态代理实现
查看>>
反射方法关闭窗体报错的解决方法
查看>>
NSInvocation 调用block clang代码转换c++
查看>>
计算字符串中每种字符出现的次数
查看>>
Python3学习笔记(十五):常用时间模块time和datetime
查看>>
SQL Server2005中使用XML-OPENXML
查看>>
Bingo·Leap Motion设备原理解密了
查看>>