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/
$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