这一切都在
Tomcat’s ClassLoading HOW-TO中描述。它不一定是按字母顺序排列的。如果您观察到这种行为,如果您打算将WebApp在服务器上移植,则绝对不会依赖此行为。例如,Tomcat 6“巧合”订购,但Tomcat 8没有。
总结如下:
> bootstrap / system(JRE / lib,then server.loader)
> webapp库(WEB-INF / classes,然后WEB-INF / lib)
>常用库(common.loader,然后是Tomcat / lib)
> webapp共享库(shared.loader)
如果您希望保证JAR X在JAR Y之后加载,那么您需要将JAR X放在上面列出的稍后的某个地方。
Lastly, the web application class loader will always delegate first for JavaEE API classes for the specifications implemented by Tomcat (Servlet, JSP, EL, WebSocket). All other class loaders in Tomcat follow the usual delegation pattern.
这意味着如果webapp包含任何JavaEE类(javax。*),那么它将被tomcat忽略。
对于每个加载程序,只要JVM需要导入/执行并且尚未加载,JVM将按顺序加载这些类。