java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序

时间:2022-12-21 17:52:23

如果是发布到weblogic的话,可以在WebContent\WEB-INF\weblogic.xml里面配置。
参考配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<container-descriptor>
<!-- 修改JVAV类后不会自动重启 在debug模式下 修改方法内逻辑也不用重启,但是改变方法参数等需要重启才管用 -->
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
<!-- <resource-reload-check-secs>-1</resource-reload-check-secs>
<!-- web-inf/classes里面优于lib加载 -->
<prefer-web-inf-classes>true</prefer-web-inf-classes> -->
</container-descriptor>
<!-- URL根路径 -->
<context-root></context-root>
<jsp-descriptor>
<!-- 查看(调试)JSP编译生成的java源文件 \servers\AdminServer\tmp\_WL_user\webapp\XXX\jsp_servlet\_jsp\_ -->
<keepgenerated>true</keepgenerated>
<!-- 修改JSP后不要重启服务就自动加载-->
<page-check-seconds>1</page-check-seconds>
</jsp-descriptor>
</weblogic-web-app>

-----------------------------------------------------------------
Tomcat启动时classloader加载顺序 
Tomcat的class加载的优先顺序一览 
1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。 
2.环境变量CLASSPATH中的jar和class文件。 
3.$CATALINA_HOME/common/classes下的class文件。 
4.$CATALINA_HOME/commons/endorsed下的jar文件。 
5.$CATALINA_HOME/commons/i18n下的jar文件。 
6.$CATALINA_HOME/common/lib 下的jar文件。 
(JDBC驱动之类的jar文件可以放在这里,这样就可以避免在server.xml配置好数据源却出现找不到JDBC Driver的情况。) 
7.$CATALINA_HOME/server/classes下的class文件。 
8.$CATALINA_HOME/server/lib/下的jar文件。 
9.$CATALINA_BASE/shared/classes 下的class文件。 
10.$CATALINA_BASE/shared/lib下的jar文件。 
11.各自具体的webapp /WEB-INF/classes下的class文件。 
12.各自具体的webapp /WEB-INF/lib下的jar文件