最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java?-jar/-cp啟動(dòng)添加外部的依賴包方式

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

java -jar/-cp啟動(dòng)添加外部的依賴包

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

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

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

ClassLoader的具體作用就是將class文件加載到j(luò)vm虛擬機(jī)中去。

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

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

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

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

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

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

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

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

一、Bootstrap ClassLoader通過改變Xbootclasspath參數(shù)實(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實(shí)現(xiàn)

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

但如果你手動(dòng)指定系統(tǒng)屬性且忘了把$JAVA_HOME/lib/ext路徑給加上,那么ExtClassLoader不會(huì)去加載$JAVA_HOME/lib/ext下面的jar文件,這意味著你將失去一些功能,例如java自帶的加解密算法實(shí)現(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命令啟動(dòng)程序的時(shí)候,有一些不同,主要為:

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

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

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

3.1 java -cp/classpath方式

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

3.2 java -cp方式

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

Main-Class屬性,例如

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

#多個(gè)jar包用空格隔開

我的做法是:

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

總結(jié)

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

相關(guān)文章

  • java中對象的比較equal、Comparble、Comparator的區(qū)別

    java中對象的比較equal、Comparble、Comparator的區(qū)別

    本文主要介紹了java中對象的比較equal、Comparble、Comparator的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • sprinboot項(xiàng)目啟動(dòng)一半到圖形化界面卡住了的解決

    sprinboot項(xiàng)目啟動(dòng)一半到圖形化界面卡住了的解決

    這篇文章主要介紹了sprinboot項(xiàng)目啟動(dòng)一半到圖形化界面卡住了的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解

    Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解

    這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 詳解SpringBoot集成Hera日志管理新方案

    詳解SpringBoot集成Hera日志管理新方案

    本文介紹了SpringBoot集成Hera日志平臺(tái)的完整方案,SpringBoot與Hera的集成步驟包括環(huán)境準(zhǔn)備、核心參數(shù)配置、無侵入式日志輸出和控制臺(tái)高效排查,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作

    java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作

    這篇文章主要介紹了java中char對應(yīng)的ASCII碼的轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • SpringBoot使用JUL實(shí)現(xiàn)日志記錄功能

    SpringBoot使用JUL實(shí)現(xiàn)日志記錄功能

    在SpringBoot中,我們可以使用多種日志框架進(jìn)行日志記錄,其中,JUL(Java Util Logging)是Java平臺(tái)自帶的日志框架,它提供了簡單的 API 和配置,可以輕松地進(jìn)行日志記錄,本文將介紹如何在 SpringBoot中使用JUL進(jìn)行日志記錄,并提供示例代碼
    2023-06-06
  • 基于SpringBoot+Redis實(shí)現(xiàn)分布式鎖

    基于SpringBoot+Redis實(shí)現(xiàn)分布式鎖

    本文主要介紹了基于SpringBoot+Redis實(shí)現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • java操作時(shí)間方式基礎(chǔ)教程demo

    java操作時(shí)間方式基礎(chǔ)教程demo

    這篇文章主要為大家介紹了java操作時(shí)間方式demo基礎(chǔ)教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • java Thread 多線程

    java Thread 多線程

    本篇文章小編為大家介紹,java Thread 多線程。需要的朋友參考下
    2013-04-04
  • Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案

    這篇文章主要介紹了Springboot升級至2.4.0中出現(xiàn)的跨域問題分析及修改方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評論

珠海市| 洛宁县| 延庆县| 南召县| 牙克石市| 武清区| 南充市| 抚顺县| 定南县| 贵阳市| 静海县| 肇州县| 海安县| 临沂市| 织金县| 平安县| 北宁市| 建湖县| 如东县| 铜陵市| 星子县| 永新县| 黑山县| 平泉县| 扎赉特旗| 大安市| 偏关县| 尚义县| 城步| 中卫市| 普兰县| 六盘水市| 怀集县| 济宁市| 洪泽县| 道真| 邳州市| 永年县| 耒阳市| 本溪市| 简阳市|