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

解決運(yùn)行jar包出錯(cuò):ClassNotFoundException問(wèn)題

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

Java命令運(yùn)行jar 報(bào)錯(cuò)

運(yùn)行jar命令

java -jar xxx.jar

報(bào)錯(cuò):

Caused by: java.lang.ClassNotFoundException:

原因:要運(yùn)行的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加載后加載。一般用這個(gè)。
  • -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)每個(gè)jar用分號(hào)隔開(kāi),unix系統(tǒng)下用冒號(hào)隔開(kāi)

方式二

AppClassloader來(lái)加載

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

我們?cè)贛ANIFEST.MF中添加如下代碼:

Class-Path: lib/some.jar

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

(這里我剛開(kāi)始理解成了把lib文件夾也打包進(jìn)test.jar中,實(shí)踐后沒(méi)有成功,實(shí)際情況是lib和test.jar,是同一個(gè)目錄一個(gè)層次級(jí)別的)然后測(cè)試運(yùn)行,一切正常!

如果有多個(gè)jar包需要引用的情況:

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

每個(gè)單獨(dú)的jar用空格隔開(kāi)就可以了。注意使用相對(duì)路徑。

另:如果META-INF

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

jar包運(yùn)行報(bào)錯(cuò):Invalid or corrupt jarfile

執(zhí)行:

java -jar xxx.jar

運(yùn)行一個(gè)jar包時(shí),提示報(bào)錯(cuò):

Invalid or corrupt jarfile

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

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

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

MANIFEST.MF格式要求

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

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

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

4. 每行最長(zhǎng)72個(gè)字符,如果超過(guò)的話,采用續(xù)行,換行繼續(xù)必須以空格開(kāi)頭。

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

針對(duì)MANIFEST.MF文件每行不能超過(guò)72個(gè)字符的說(shuō)法,還有疑問(wèn)。因?yàn)槲业腗ANIFEST.MF文件中,Class-Path屬性的很多行都是超過(guò)72個(gè)字符的,實(shí)際上并沒(méi)有引起異常。

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

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

相關(guān)文章

  • Java Reactor反應(yīng)器模式使用方法詳解

    Java Reactor反應(yīng)器模式使用方法詳解

    這篇文章主要介紹了Java Reactor反應(yīng)器模式使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查

    springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查

    這篇文章主要介紹了springCloud集成nacos啟動(dòng)時(shí)報(bào)錯(cuò)原因排查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解Java關(guān)于JDK中時(shí)間日期的API

    詳解Java關(guān)于JDK中時(shí)間日期的API

    這篇文章主要介紹了詳解Java關(guān)于JDK中時(shí)間日期的API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • IDEA中Maven依賴下載失敗的完美解決方案

    IDEA中Maven依賴下載失敗的完美解決方案

    使用IDEA進(jìn)行Maven項(xiàng)目開(kāi)發(fā)時(shí),時(shí)不時(shí)會(huì)遇到pom.xml報(bào)錯(cuò)的情況,其中很大概率是因?yàn)镸aven依賴的jar包下載失敗,找來(lái)找去也沒(méi)有找到是什么問(wèn)題,困擾了很多程序猿,這里給出IDEA中Maven依賴下載失敗解決方案,給大家參考,實(shí)測(cè)有用
    2020-04-04
  • SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)

    SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)

    Eureka是一種基于REST(具像狀態(tài)傳輸)的服務(wù),主要用于AWS云中定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。本文記錄一個(gè)簡(jiǎn)單的服務(wù)注冊(cè)與發(fā)現(xiàn)實(shí)例。感興趣的小伙伴們可以參考一下
    2019-01-01
  • mybatis generator 配置 反向生成Entity簡(jiǎn)單增刪改查(推薦)

    mybatis generator 配置 反向生成Entity簡(jiǎn)單增刪改查(推薦)

    這篇文章主要介紹了mybatis generator 配置 反向生成Entity簡(jiǎn)單增刪改查(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 關(guān)于Unsupported major.minor version 49.0的錯(cuò)誤解決辦法

    關(guān)于Unsupported major.minor version 49.0的錯(cuò)誤解決辦法

    這篇文章主要介紹了關(guān)于Unsupported major.minor version 49.0的錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • IDEA與JDK、Maven安裝配置完整步驟解析

    IDEA與JDK、Maven安裝配置完整步驟解析

    這篇文章主要介紹了如何安裝和配置IDE(IntelliJ?IDEA),包括IDE的安裝步驟、JDK的下載與配置、Maven的安裝與配置,以及如何在IDE中使用Maven進(jìn)行Java開(kāi)發(fā),需要的朋友可以參考下
    2025-03-03
  • java中的類型自動(dòng)轉(zhuǎn)換機(jī)制解析

    java中的類型自動(dòng)轉(zhuǎn)換機(jī)制解析

    這篇文章主要介紹了java中的類型自動(dòng)轉(zhuǎn)換機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 深入理解Java設(shè)計(jì)模式之適配器模式

    深入理解Java設(shè)計(jì)模式之適配器模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之適配器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11

最新評(píng)論

林甸县| 石城县| 桃江县| 澄迈县| 高青县| 威远县| 合阳县| 阿尔山市| 赫章县| 康定县| 德江县| 定结县| 尚义县| 乌兰察布市| 林周县| 淮滨县| 彝良县| 越西县| 福州市| 忻州市| 泾川县| 白水县| 霍邱县| 元朗区| 秀山| 冷水江市| 蓝山县| 长子县| 蒙山县| 吉首市| 罗城| 益阳市| 扬中市| 彩票| 吉安市| 古田县| 赤水市| 潞城市| 许昌市| 繁昌县| 增城市|