本文為博主原創,轉載請註明出處:
1.idea檢視jar包載入順序
jdk8 可以透過 -XX:+TraceClassPaths 引數進行檢視jar包的載入順序
jdk11 可以透過 -Xlog:class+path=info 引數進行檢視jar包的載入順序
idea 啟動檢視配置方式如下:
進行服務啟動之後,會在控制檯列印jvm載入時的classpath引數;示例如下:
在控制檯 搜尋 java.class.path 就能看到具體的配置;java.class.path 的順序就是 jvm 載入class以及 jar包的順序;排在前面的會優先載入;
2.tomcat啟動載入順序
當我們啟動一個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包是按順序從上到下依次載入
由ClassLoader的雙親委託模式載入機制我們可以知道,假設兩個包名和類名完全相同的class檔案不再同一個jar包,如果一個class檔案已經被載入java虛擬機器裡了,那麼後面的相同的class檔案就不會被載入了。
3.設定 classpath
設定多個類路徑;多個類路徑以分號分隔
D:> java -classpath C:\java\MyClasse1;C:\java\MyClass2 com.yiibai.MainApp
設定多個jar的路徑順序:多個jar使用 英文冒號進行分割
-classpath /data/tomcat_8081/bin/bootstrap.jar:/data/tomcat_8081/bin/tomcat-juli.jar