jar打包的各種問題最終都完美解決了[轉]

當在本地打成jar包向服務器傳輸時,由於網絡太慢,所以傳輸時間會很長,此時可以將更改的class文件傳輸到服務器(較快),再使用jar命令重新打包

目前爲止最完美的命令:
在上命令之前,先來個文件的目錄結構圖:

 

 

 


然後完美命令就是: 且 META-INF/MANIFEST.MF  一定要放BOOt-INF/ 和 org/ 前面

jar -cvfm0 newJarName.jar     META-INF/MANIFEST.MF    BOOT-INF/    org/

 

注意:-m  包含指定清單文件中的清單信息 ,   上面的最後一個參數是數字零 , 代表壓縮率爲0,不是字母O,要看清楚了。

這樣就可以了,這是踩坑之後的我用到的最完美的命令了 , 這種方式打出來的包不讓springboot 項目啓動不了

踩坑歷程:

1、第一次使用命令:


jar -cvfm BOOT-INF/ META-INF/ org/
打包失敗:
提示:BOOT-INF拒絕訪問
然後我就想,是不是參數m的問題呢,然後我就把參數m去掉了,打包成功了

 

2、第二次使用命令


jar -cvf BOOT-INF/ META-INF/ org/
打包成功:
運行jar包報錯:提示什麼 沒有主清單屬性 之類的錯誤
運行:jar /? 查看m參數的作用:

原來m參數就是幹這個的啊

 

3、第三次,其實是在第一次命令的基礎上

 

我在猜測,是否是後面參數的順序還是什麼的,最後在調整順序並且將這個暴露出來後發現可以了
本次命令是:
jar -cvfm newJarName.jar META-INF/MANIFEST.MF BOOT-INF/ org/

但是又報錯:Unable to open nested entry “BOOT-INF/**”之類的,上網查詢了一下發現
jar命令默認是會壓縮第三方jar包(也就是BOOT-INF下的lib文件夾的jar包)的,所以加上參數0(零)最終成功。

我太難了
請原諒我沒有好好整理格式就直接粘貼上來了。
————————————————
版權聲明:本文爲CSDN博主「cells-0」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zhaokai0130/article/details/103230118

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章