乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Java學(xué)習(xí) 如何擴(kuò)展加載Jar包?

       學(xué)掌門 2022-05-16 發(fā)布于上海

      java -jar參數(shù)運(yùn)行應(yīng)用時classpath的設(shè)置方法 當(dāng)用java -jar yourJarExe.jar來運(yùn)行一個經(jīng)過打包的應(yīng)用程序的時候,你會發(fā)現(xiàn)如何設(shè)置-classpath參數(shù)應(yīng)用程序都找不到相應(yīng)的第三方類,報ClassNotFound錯誤。實(shí)際上這是由于當(dāng)使用-jar參數(shù)運(yùn)行的時候,java VM會屏蔽所有的外部classpath,而只以本身yourJarExe.jar的內(nèi)部class作為類的尋找范圍。

      解決方案

      擴(kuò)展性類加載器

      擴(kuò)展性類加載器一般存放在{Java_home}\jre\lib\ext目錄下,當(dāng)調(diào)用Java時,對擴(kuò)展class路徑的搜索是自動的。總會搜索的.這樣,解決的方案就很簡單了,將所有要使用的第三方的jar包都復(fù)制到ext目錄下。就會透明化進(jìn)入加載范疇內(nèi)。

      注意:不建議使用,否則所有的JRE需要遷移和統(tǒng)一和同步!

      BootStrap類加載器擴(kuò)展方案

      采用 -Xbootclasspath參數(shù)進(jìn)行加載擴(kuò)展jar包。

      Java命令行提供了如何擴(kuò)展bootStrap級別class的簡單方法。

      -Xbootclasspath: 完全取代基本核心的Java class搜索路徑,不常用,否則要重新寫所有Java核心class(建議不要用!)。

      -Xbootclasspath/a: 后綴在核心class搜索路徑后面(推薦使用)

      -Xbootclasspath/p: 前綴在核心class搜索路徑前面,不常用,避免引起不必要的沖突。(不建議使用)

      語法如下: (分隔符與classpath參數(shù)類似,unix使用:號,windows使用;號,這里以unix為例)

      java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar

      User class擴(kuò)展方案

      當(dāng)使用-jar執(zhí)行可執(zhí)行Jar包時,JVM將Jar包所在目錄設(shè)置為codebase目錄,所有的class搜索都在這個目錄下開始。

      所以如果使用了其他第三方的jar包,一個比較可以接受的可配置方案,就是利用jar包的Manifest擴(kuò)展機(jī)制。

      步驟如下:

      將需要的第三方的jar包,復(fù)制在同可執(zhí)行jar所在的目錄或某個子目錄下. 比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包復(fù)制到/usrhome目錄下或/usrhome/lib 等類似的子目錄下.

      修改Manifest 文件

      在Manifest.mf文件里加入如下行:

      Class-Path:classes12.jar lib/thirdlib.jar

      Class-Path 是可執(zhí)行jar包運(yùn)行依賴的關(guān)鍵詞。

      要注意的是Class-Path只是作為你本地機(jī)器的CLASSPATH環(huán)境變量的一個縮寫,也就是說用這個前綴表示在你的jar包執(zhí)行機(jī)器上所有的CLASSPATH目錄下尋找相應(yīng)的第三方類/類庫。

      你并不能通過Class-Path來加載位于你本身的jar包里面(或者網(wǎng)絡(luò)上)的jar文件。

      因?yàn)閺睦碚撋蟻碇v,你的jar發(fā)布包不應(yīng)該再去包含其他的第三方類庫(而應(yīng)該通過使用說明來提醒用戶去獲取相應(yīng)的支持類庫)。

      如果由于特殊需要必須把其他的第三方類庫(jar, zip, class等)直接打包在你自己的jar包里面一起發(fā)布,你就必須通過實(shí)現(xiàn)自定義的ClassLoader來按照自己的意圖加載這些第三方類庫。

      文章來源:網(wǎng)絡(luò) 版權(quán)歸原作者所有

      上文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系小編,我們將立即處理

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多