1. 程式人生 > >打包成jar檔案後執行出現Invalid or corrupt jarfile 解決

打包成jar檔案後執行出現Invalid or corrupt jarfile 解決

Invalid or corrupt jarfile /home/WebService.jar

Failed to load Main-Class manifest attribute from

/home/WebService.jar

打jar包

1.jar -cvf hello.jar hello.class 

2.這時java -jar hello.jar 是執行不了的

3.解壓剛打的Jar包到新的目錄,會發現裡邊多了一個META-INF資料夾裡邊有一個MANIFEST.MF檔案

4.用記事本開啟MANIFEST.MF檔案,修改為

Manifest-Version: 1.0

Main-Class: Hello

Created-By: aaa


5.將MANIFEST.MF複製到和Hello.class 放在一起

然後打包:

jar cvfm abc.jarMANIFEST.MFHello.class


得到可執行的jar

java -jar  ***   就可以執行的jar包[ 其中***為jar包名] 

  打 Java 包的時候可以有一個清單檔案:MANIFEST.MF,它是打包的關鍵性檔案,主要是設定執行入口類和支援庫的路徑,在執行 Java應用程式時會根據此檔案中給出的資訊來查詢入口類和支援庫。 它的內容一般包括:
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: HelloWorld
其中比較容易忽略的是還可以有一個Class-Path屬性的設定,Class-Path:用來指定支援庫的路徑,程式執行時依據 Class-Path項的設定路徑來查詢支援庫,每一個支援庫之間用空格分開。比如這樣寫清單檔案:
Manifest-Version: 1.0 Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar Created-By: yourName Main-Class: org.qiujy.test.TestDB

如果出現:

java.io.IOException: invalid header field

這樣的錯誤的話,就說明MANIFEST.MF檔案有問題,比如寫成了這樣:

Manifest-Version: 1.0

Main-Class:com.feishan.lottery.view.Index
Class-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar

注意:

Main-Class:後面應該有一個空格
Manifest-Version: 1.0
Main-Class: com.feishan.lottery.view.Index
Class-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar
這樣寫就對了注意:最後一行也要有一個回車鍵。否則後面那一行是不能打包進去的

最後用java -jar lottery.jar就可以運行了

這個 manifest.mf (證明)可以放在任何位置,也可以是其它的檔名,

只需要有 Main-Class: test.Test 一行,且該行以一個回車符結束

Manifest 技巧說明:

總是以Manifest-Version屬性開頭

每行最長72個字元,如果超過的化,採用續行

確認每行都以回車結束,否則改行將會被忽略

如果Class-Path 中的存在路徑,使用"/"分隔目錄,與平臺無關

使用空行分隔主屬性和package屬性

使用"/"而不是"."來分隔package 和class ,比如 com/example/myapp/ (好像使用" ." 也可以)

class 要以.class結尾,package 要以 / 結尾

還有

你設定java_home了嗎? 
想要刪掉環境變數PATH只要把c:/java/jdk/bin(具體看你的路徑)的“;”前的刪掉就好了 

開啟path 點下面那一大串,按home鍵(為了將游標移到開頭) 
把你javac.exe的路徑copy(只要資料夾路徑)加到path然後加“;”號 
最後在cmd 裡測試下 java-version          

總得來說,解決辦法:

Manifest-Version: 1.0

Sealed: true

Main-Class: cn.baidu.main.Publish

 此處回車