在Tomcat中从classes文件夹而不是lib文件夹中获取类的配置?

时间:2012-02-26 16:33:31

标签: java web-applications webserver tomcat6

我在类文件夹下有相同的类文件,在lib文件夹里面也有jar文件。但是这个类是从jar文件中获取的。根据我的理解,在这种情况下,类文件夹下的类优先于jar文件。至少这是我在glassfish中看到的行为。但这不是tomcat中的行为。我是否需要在tomcat的情况下进行任何配置才能优先考虑类文件夹下的类?我正在使用tomcat 6.0.26。

1 个答案:

答案 0 :(得分:3)

规范(2.4)说:

  

Web应用程序类加载器必须从中加载类   首先是WEB-INF / classes目录,然后是库中的JARs   WEB-INF / lib目录。

因此,如果Tomcat首先从jar加载,则它不符合规范。

Its documentation说:

  

因此,从Web应用程序的角度来看,类或   资源加载按以下顺序在以下存储库中查找:

     
      
  • JVM的Bootstrap类
  •   
  • 系统类加载器类(如上所述)
  •   
  • / WEB-INF /您的Web应用程序的类
  •   您的Web应用程序的
  • / WEB-INF / lib / * .jar
  •   
  • 常见的类加载器类(如上所述)
  •   

所以我很惊讶你看到这样的行为。如果您完全确定该类不在Tomcat自己的类路径中的某个jar中,请提交错误报告。在此之前,还要确保清除Tomcat的工作目录,甚至从全新安装的Tomcat开始。

解决方法当然是重新打包jar文件以包含您修改的类,而不是依赖于类加载顺序。