从lib目录加载jar文件的顺序

达米安:

谁能解释从Tomcat的lib目录加载jar文件的顺序?是按字母顺序吗?随机吗?还是其他命令?

BalusC:

所有这些都在Tomcat的ClassLoading HOW-TO中进行了描述它不一定按字母顺序。如果您观察到这种行为,那么如果要使您的webapp在服务器之间保持可移植性,则绝对不应依赖例如,Tomcat 6巧合地订购了它,而Tomcat 8则没有。

总结一下,加载顺序如下:

  1. 引导程序/系统(JRE/lib,然后server.loader
  2. webapp库(WEB-INF/classes,然后WEB-INF/lib
  3. 通用库(common.loader,然后Tomcat/lib
  4. webapp共享库(shared.loader

如果您想保证JAR X会 JAR Y之后加载,则需要将JAR X放在上面清单稍后显示的位置之一

但是,有一些例外,tomcat文档中提到了这些例外

最后,Web应用程序类加载器将始终首先为Tomcat实现的JavaEE API类委托(Servlet,JSP,EL,WebSocket)。Tomcat中的所有其他类装入器都遵循通常的委托模式。

这意味着,如果一个Web应用程序包含任何JavaEE类(javax.*),则它将被tomcat忽略。

对于每个加载器,只要需要导入/执行并且尚未加载它们,JVM就会按顺序加载它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章