亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java?-jar/-cp啟動添加外部的依賴包方式

 更新時間:2024年01月15日 09:42:39   作者:班班v  
這篇文章主要介紹了java?-jar/-cp啟動添加外部的依賴包方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java -jar/-cp啟動添加外部的依賴包

啟動java主要有兩種方式,分別為:java -jar test.jar、java -cp/-classpath test.jar com.main.Test。

然后分別講一下這兩種方式啟動程序時,如何加載外部依賴的包。

為了方便大家理解,首先說一下Java的ClassLoader。

ClassLoader的具體作用就是將class文件加載到jvm虛擬機中去。

我們都知道在Java中程序是運行在虛擬機中,我們平常用文本編輯器或者是IDE編寫的程序都是.java格式的文件,這是最基礎的源碼,但這類文件是不能直接運行的。

需要將.java的文件編譯成字節(jié)碼.class文件,才能加載到JVM中運行,這個過程由ClassLoader來完成,Java自帶的ClassLoader有3大類,分別為:

Bootstrap ClassLoader 最頂層的加載類,主要加載核心類庫,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。

另外需要注意的是可以通過啟動jvm時指定-Xbootclasspath和路徑來改變Bootstrap ClassLoader的加載目錄。

比如java -Xbootclasspath/a:path被指定的文件追加到默認的bootstrap路徑中。

我們可以打開我的電腦,在上面的目錄下查看,看看這些jar包是不是存在于這個目錄。

  • Extention ClassLoader 擴展的類加載器,加載目錄%JRE_HOME%\lib\ext目錄下的jar包和class文件。還可以加載-D java.ext.dirs選項指定的目錄。
  • Appclass Loader也稱為SystemAppClass 加載當前應用的classpath的所有類。

所以,我們要改變這加入外部依賴的jar包,可以分別考慮改變這3個ClassLoader來實現(xiàn),分別來講一下這3種實現(xiàn)方法。

一、Bootstrap ClassLoader通過改變Xbootclasspath參數(shù)實現(xiàn)

一般有3種方法:

  • -Xbootclasspath: 完全取代基本核心的Java class 搜索路徑.不常用,否則要重新寫所有Java 核心class
  • -Xbootclasspath/a: 后綴在核心class搜索路徑后面(推薦使用)
  • -Xbootclasspath/p: 前綴在核心class搜索路徑前面.不常用,避免引起不必要的沖突.

使用Bootstrap ClassLoader的一般方式為:

 java -Xbootclasspath/a:test1.jar -jar test2.jar					//-jar方式
 java -Xbootclasspath/a:test1.jar -cp test2.jar com.test2.Test2		//-cp方式

二、Extention ClassLoader通過改變參數(shù)java.ext.dirs實現(xiàn)

java中系統(tǒng)屬性java.ext.dirs指定的目錄由ExtClassLoader加載器加載,如果您的程序沒有指定該系統(tǒng)屬性(-Djava.ext.dirs=lib)那么該加載器默認加載 $JAVA_HOME/lib/ext目錄下的所有jar文件。

但如果你手動指定系統(tǒng)屬性且忘了把$JAVA_HOME/lib/ext路徑給加上,那么ExtClassLoader不會去加載$JAVA_HOME/lib/ext下面的jar文件,這意味著你將失去一些功能,例如java自帶的加解密算法實現(xiàn)。

所以我們要既要帶有原來的lib/ext下的包,也要加入其他依賴,則可以這樣寫

java -Djava.ext.dirs=%JAVA_HOME%\jre\lib\ext;lib -jar test2.jar
java -Djava.ext.dirs=%JAVA_HOME%\jre\lib\ext;lib -cp test2.jar com.test2.Test2
#java.ext.dirs需要寫成目錄格式

三、Appclass Loader加載的是classpath配置的jar包

java -cp和java -jar命令啟動程序的時候,有一些不同,主要為:

用java -jar啟動的時候,java VM會屏蔽所有的外部classpath,也就是配置的 -cp/-classpath環(huán)境變量會失效,而只以本身jar的內(nèi)部class作為類的尋找范圍。

這時候只能通過改變META-INF/MANIFEST.MF來設置classpath,而java -cp方式則可以正常加載內(nèi)部的類來實現(xiàn)。

所以這兩種方式加載外部類的方法分別為:

3.1 java -cp/classpath方式

java -cp test2.jar;test1.jar com.test2.Test2  #Test是main方法,通過-cp方式加載2個jar包

3.2 java -cp方式

修改主類jar包 META-INF/MANIFEST.MF內(nèi)容種的

Main-Class屬性,例如

Main-Class: /home/test1.jar /home/test3.jar

#多個jar包用空格隔開

我的做法是:

直接修改java.ext.dirs來加載jar包的屬性來實現(xiàn)

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring容器中添加bean的5種方式

    Spring容器中添加bean的5種方式

    我們知道平時在開發(fā)中使用Spring的時候,都是將對象交由Spring去管理,那么將一個對象加入到Spring容器中,有哪些方式呢,感興趣的可以了解一下
    2021-07-07
  • RocketMQ源碼分析之Broker過期消息清理機制

    RocketMQ源碼分析之Broker過期消息清理機制

    這篇文章主要為大家介紹了RocketMQ源碼分析之Broker過期消息清理機制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Kotlin與Java的主客觀對比分析

    Kotlin與Java的主客觀對比分析

    這篇文章主要介紹了Kotlin與Java的主客觀對比分析,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java通過PowerMockito和Mokito進行單元測試的實現(xiàn)

    Java通過PowerMockito和Mokito進行單元測試的實現(xiàn)

    PowerMockito和Mockito都是Java語言中的測試框架,用于進行單元測試和集成測試,本文就來詳細的介紹一下通過PowerMockito和Mokito進行單元測試,感興趣的可以了解一下
    2023-08-08
  • java實現(xiàn)mongodb的數(shù)據(jù)庫連接池

    java實現(xiàn)mongodb的數(shù)據(jù)庫連接池

    這篇文章主要介紹了基于java實現(xiàn)mongodb的數(shù)據(jù)庫連接池,Java通過使用mongo-2.7.3.jar包實現(xiàn)mongodb連接池,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Javafx利用fxml變換場景的實現(xiàn)示例

    Javafx利用fxml變換場景的實現(xiàn)示例

    本文主要介紹了Javafx利用fxml變換場景的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • mybatis-plus中更新null值的問題解決

    mybatis-plus中更新null值的問題解決

    本文主要介紹 mybatis-plus 中常使用的 update 相關方法的區(qū)別,以及更新 null 的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-04-04
  • springcloud本地調試feign調用出現(xiàn)的詭異404問題及解決

    springcloud本地調試feign調用出現(xiàn)的詭異404問題及解決

    這篇文章主要介紹了springcloud本地調試feign調用出現(xiàn)的詭異404問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java整數(shù)和字符串相互轉化實例詳解

    Java整數(shù)和字符串相互轉化實例詳解

    這篇文章主要介紹了Java整數(shù)和字符串相互轉化實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • SpringAOP中的Advisor詳解

    SpringAOP中的Advisor詳解

    這篇文章主要介紹了SpringAOP中的Advisor詳解,平時我們項目中涉及到?AOP,基本上就是聲明式配置一下就行了,無論是基于?XML?的配置還是基于?Java?代碼的配置,都是簡單配置即可使用,今天就來看一下聲明式配置的使用,需要的朋友可以參考下
    2023-08-08

最新評論