java 啟動檢視jar包載入順序並設定classpath

香吧香發表於2023-02-11

本文為博主原創,轉載請註明出處:

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 

 

相關文章