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

解決運行jar包出錯:ClassNotFoundException問題

 更新時間:2021年12月07日 10:11:49   作者:LuckyTHP  
這篇文章主要介紹了解決運行jar包出錯:ClassNotFoundException問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Java命令運行jar 報錯

運行jar命令

java -jar xxx.jar

報錯:

Caused by: java.lang.ClassNotFoundException:

原因:要運行的jar缺少依賴包

執(zhí)行jar正確命令:

java -Xbootclasspath/a:/home/webuser/gogoal_platform/ggopenapi/lib/snakeyaml.jar -jar xxx.jar

解釋:

  • -Xbootclasspath:完全取代系統(tǒng)Java classpath.最好不用。
  • -Xbootclasspath/a: 在系統(tǒng)class加載后加載。一般用這個。
  • -Xbootclasspath/p: 在系統(tǒng)class加載前加載,注意使用,和系統(tǒng)類沖突就不好了.
win32 java -Xbootclasspath/a: some.jar;some2.jar; -jar test.jar
unix java -Xbootclasspath/a: some.jar:some2.jar: -jar test.jar

win32系統(tǒng)每個jar用分號隔開,unix系統(tǒng)下用冒號隔開

方式二

AppClassloader來加載

這樣就不需要classpath參數(shù)了

我們在MANIFEST.MF中添加如下代碼:

Class-Path: lib/some.jar

lib是和test.jar同目錄的一個子目錄,test.jar要引用的some.jar包就在這里面。

(這里我剛開始理解成了把lib文件夾也打包進test.jar中,實踐后沒有成功,實際情況是lib和test.jar,是同一個目錄一個層次級別的)然后測試運行,一切正常!

如果有多個jar包需要引用的情況:

Class-Path: lib/some.jar lib/some2.jar

每個單獨的jar用空格隔開就可以了。注意使用相對路徑。

另:如果META-INF

下包含INDEX.LIST文件的話,可能會使Class-Path配置失效。INDEX.LIST是Jar打包工具打包時生成的索引文件,刪除對運行不產(chǎn)生影響。

jar包運行報錯:Invalid or corrupt jarfile

執(zhí)行:

java -jar xxx.jar

運行一個jar包時,提示報錯:

Invalid or corrupt jarfile

該jar之前一直是正常運行的,這次只是增加了一項圖片處理功能,引入了opencv-2413.jar。除了class文件的變化之外,唯一的修改就是MANIFEST.MF文件了。分析來看,問題很可能就出在這個文件上,將該文件還原,果然,jar至少能啟動了。

不就是MANIFEST.MF文件中類路徑新添加了一個opencv嗎,為什么會這樣呢?

MANIFEST.MF是一個非常脆弱的文件,格式要求比較嚴格,一個空格、一個回車符,都可能會導(dǎo)致該文件失效,從而使得對應(yīng)的jar包非法:Invalid or corrupt jarfile!

MANIFEST.MF格式要求

1. 文件中的內(nèi)容以key-value鍵值對的形式出現(xiàn),key和value之間采用"英文冒號+空格"進行分隔,注意:冒號后的空格必須有;key必須頂格寫,之前不能有空格。

2. 文件開頭不能有空行,并且文件總是以Manifest-Version屬性開頭。

3. 文件必須以一個空行結(jié)束,注意:該空行不能有任何字符,包括空格。

4. 每行最長72個字符,如果超過的話,采用續(xù)行,換行繼續(xù)必須以空格開頭。

5. 對于Class-Path屬性中的存在的路徑,使用"/"分隔目錄,與平臺無關(guān);多個jar包引用以空格分開。

針對MANIFEST.MF文件每行不能超過72個字符的說法,還有疑問。因為我的MANIFEST.MF文件中,Class-Path屬性的很多行都是超過72個字符的,實際上并沒有引起異常。

我的jar包之所以報錯,就是違背了以上的第3條,文件雖然以空行結(jié)束,但該空行隱藏了一個空格,也就是上圖中的第14行包含了一個空格。

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

相關(guān)文章

  • SpringBoot?HikariCP配置項及源碼解析

    SpringBoot?HikariCP配置項及源碼解析

    這篇文章主要為大家介紹了SpringBoot?HikariCP配置項及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Mybatis全局配置及映射關(guān)系的實現(xiàn)

    Mybatis全局配置及映射關(guān)系的實現(xiàn)

    本文主要介紹了Mybatis全局配置及映射關(guān)系的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring Boot詳解配置文件的用途與用法

    Spring Boot詳解配置文件的用途與用法

    SpringBoot項目是一個標準的Maven項目,它的配置文件需要放在src/main/resources/下,其文件名必須為application,其存在兩種文件形式,分別是properties和yaml(或者yml)文件
    2022-06-06
  • Java實現(xiàn)鼠標拖拽移動界面組件

    Java實現(xiàn)鼠標拖拽移動界面組件

    在Java中,F(xiàn)rame或者JFrame自身已經(jīng)實現(xiàn)了鼠標拖拽標題欄移動窗口的功能。但是Jframe的樣式實在無法令人滿意,那你又該怎么實現(xiàn)鼠標拖拽移動窗口的目的呢?今天我們來探討下
    2014-09-09
  • 手把手教你SpringBoot整合Mybatis

    手把手教你SpringBoot整合Mybatis

    這篇文章主要介紹了手把手教你SpringBoot整合Mybatis,Mybatis是一款持久化框架,可以幫我們省去大部分jdbc的代碼,需要的朋友可以參考下
    2023-03-03
  • java 定時同步數(shù)據(jù)的任務(wù)優(yōu)化

    java 定時同步數(shù)據(jù)的任務(wù)優(yōu)化

    這篇文章主要介紹了java 定時同步數(shù)據(jù)的任務(wù)優(yōu)化,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java組件javabean用戶登錄實例詳解

    Java組件javabean用戶登錄實例詳解

    這篇文章主要為大家詳細介紹了Java組件javabean用戶登錄實例,內(nèi)容有用戶登錄,注冊和退出等,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Maven 錯誤找不到符號的解決方法

    Maven 錯誤找不到符號的解決方法

    這篇文章主要介紹了Maven 錯誤找不到符號的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 淺談SpringCloud feign的http請求組件優(yōu)化方案

    淺談SpringCloud feign的http請求組件優(yōu)化方案

    這篇文章主要介紹了淺談SpringCloud feign的http請求組件優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java可以作為第一門編程語言學(xué)習(xí)嗎

    java可以作為第一門編程語言學(xué)習(xí)嗎

    在本篇內(nèi)容里小編給JAVA零基礎(chǔ)的網(wǎng)友分享一篇關(guān)于java可以作為第一門編程語言學(xué)習(xí)嗎的文章,有興趣的朋友們可以參考下。
    2020-11-11

最新評論