我在类文件夹下有相同的类文件,在lib文件夹里面也有jar文件。但是这个类是从jar文件中获取的。根据我的理解,在这种情况下,类文件夹下的类优先于jar文件。至少这是我在glassfish中看到的行为。但这不是tomcat中的行为。我是否需要在tomcat的情况下进行任何配置才能优先考虑类文件夹下的类?我正在使用tomcat 6.0.26。
答案 0 :(得分:3)
规范(2.4)说:
Web应用程序类加载器必须从中加载类 首先是WEB-INF / classes目录,然后是库中的JARs WEB-INF / lib目录。
因此,如果Tomcat首先从jar加载,则它不符合规范。
因此,从Web应用程序的角度来看,类或 资源加载按以下顺序在以下存储库中查找:
- JVM的Bootstrap类
- 系统类加载器类(如上所述)
- / WEB-INF /您的Web应用程序的类
您的Web应用程序的- / WEB-INF / lib / * .jar
- 常见的类加载器类(如上所述)
所以我很惊讶你看到这样的行为。如果您完全确定该类不在Tomcat自己的类路径中的某个jar中,请提交错误报告。在此之前,还要确保清除Tomcat的工作目录,甚至从全新安装的Tomcat开始。
解决方法当然是重新打包jar文件以包含您修改的类,而不是依赖于类加载顺序。