1. 程式人生 > 實用技巧 >Tomcat載入依賴順序導致WEB-INF下只能把.jar放入lib

Tomcat載入依賴順序導致WEB-INF下只能把.jar放入lib

Tomcat載入依賴順序導致WEB-INF下只能把.jar放入lib

報錯:

用Servlet寫登入案例時,JdbcTemplate在測試類下可用,但釋出到Tomcat後報錯:

500:java.lang.ClassNotFoundException: org.springframework.jdbc.core.RowMapper

解決

專案名\out\artifacts\釋出路徑\WEB-INF\lib 下發現存在相關依賴包,在專案依賴

jar搜尋順序:

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檔案。

class的搜尋順序如下:

Bootstrap classes of your JVM
System class loader classses (described above)
/WEB-INF/classes of your web application
/WEB-INF/lib/.jar of your web application
$CATALINA_HOME/common/classes
$CATALINA_HOME/common/endorsed/

.jar
$CATALINA_HOME/common/i18n/.jar
$CATALINA_HOME/common/lib/
.jar
$CATALINA_BASE/shared/classes
$CATALINA_BASE/shared/lib/*.jar

https://blog.csdn.net/smallduck155/article/details/93753616
https://www.cnblogs.com/zbzb1/p/11006205.html