3 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
所有这些都在Tomcat的ClassLoading HOW-TO中进行了描述。它不一定按字母顺序。如果您观察到这种行为,那么如果要使您的webapp在服务器之间保持可移植性,则绝对不应依赖它。例如,Tomcat 6巧合地订购了它,而Tomcat 8则没有。
总结一下,加载顺序如下:
引导程序/系统(
JRE/lib
,然后server.loader
)webapp库(
WEB-INF/classes
,然后WEB-INF/lib
)通用库(
common.loader
,然后Tomcat/lib
)webapp共享的库(
shared.loader
)
如果要保证JAR X 在 JAR Y之后加载,则需要将JAR X放在上面清单稍后显示的位置之一。
但是,有一些例外,tomcat文档中提到了这些例外
最后,对于由Tomcat(Servlet,JSP,EL,WebSocket)实现的规范,Web应用程序类加载器将始终首先委托JavaEE API类。Tomcat中的所有其他类装入器都遵循通常的委托模式。
这意味着,如果一个Web应用程序包含任何JavaEE类(javax.*
),则它将被tomcat忽略。
对于每个加载器,只要需要导入/执行并且尚未加载它们,JVM就会按顺序加载它们。
添加回答
举报
0/150
提交
取消