tomcat加載jar包順序


概述:項目使用springMVC,serviceImpl注入的一個bean無法找到,究其原因是無法找到日志類。其實在spring的配置文件中配置了bean。而且程序代碼在其他人的機子上運行不報錯。我這邊抱錯:類找不到apache.common.log.logFactory類。tomcat中部署的應用的lib文件中存在common-logging.jar包。我很納悶,糾結為什么存在類,卻找不到類呢?

問題的原因:原來我把用到的2個jar包扔到了jdk的lib文件夾。tomcat啟動的時候,就會報錯。jdk加載剛才扔進去的jar包的時候,無法找到common-logging.jar包。ps:jdk中沒有扔common-logging.jar包。刪除jdk的lib文件夾中的2個jar包,運行項目運行ok了。

 

總結:tomcat加載jar包的時候,是有順序的。這是我在網上發現的,挺靠譜的,mark一下

當我們啟動一個tomcat的服務的時候,jar包和claess文件是是以怎么樣的順序被加載進來的?

加載順序:

1. $java_home/lib 目錄下的java核心api 

2. $java_home/lib/ext 目錄下的java擴展jar包

3. java -classpath/-Djava.class.path所指的目錄下的類與jar包

4. $CATALINA_HOME/common目錄下按照文件夾的順序從上往下依次加載

5. $CATALINA_HOME/server目錄下按照文件夾的順序從上往下依次加載

6. $CATALINA_BASE/shared目錄下按照文件夾的順序從上往下依次加載

7. 我們的項目路徑/WEB-INF/classes下的class文件

8. 我們的項目路徑/WEB-INF/lib下的jar文件

在同一個文件夾下,jar包是按順序從上到下依次加載

 

tomcat的jar包加載順序從8起發生了改變,不再像之前按照字母順序,先加載的生效。而8之后,該用別的方式,該方式導致不同操作系統結果不同,雖然兩者都用的8,而我是mac,它是linux。。。當時看到那篇博客就覺得有坑,沒想到坑來的這么快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM