jar包雙擊沒反應,命令行中jar命令運行報錯"找不到或無法加載主類 ",“**.jar中沒有主清單屬性”或者“Error: Invalid or corrup jarfile **.jar。

最近寫了個小工具,在用eclipse導出可運行jar包時,遇到一連串的問題,雙擊沒反應,命令行中jar命令運行報錯“**.jar中沒有主清單屬性”或者報錯“Error: Invalid or corrupt jarfile **.jar”。  接下來依次總結解決問題的方法:

 

一、可運行jar雙擊沒反應或者一閃而過——解決辦法:

       1、修改註冊表

            (此項多篇博客和論壇帖子都有介紹,但是我的電腦始終不成功,這裏記錄一個思路):

              首先確認環境變量是否配置,JAVA_HOME配置的是什麼?下面的配置javaw.exe的路徑用自己環境變量配置的java路徑;

              修改註冊表(cmd——regedit進入):

             HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command——默認(左擊)——右鍵(修改)——"D:\java\jre\bin\javaw.exe" -jar "%1" %*

              修改註冊表()
              HKEY_CLASSES_ROOT\jar_auto_file\shell\open\command——默認(左擊)——右鍵(修改)——"D:\java\jre\bin\javaw.exe" -jar "%1" %*

             小提示:

             1、jar_auto_file可能名字不一樣,在註冊表中.jar中查看對應的名字就好,我的是jarfile。

             2、也有可能不存在\shell\open\command,右鍵新建項就好了。

       2、用bat執行:

             新建一個text文檔,內容如下:(e2w是我的jar包名字),文檔改爲.bat保存即可;

             

              小提示:下一行加一個pause命令,便於觀察報錯或者命令行輸出;

       3、cmd命令行中定位到jar包所在的文件夾並執行命令: java -jar **.jar 即可;

             小提示:命令行窗口定位文件夾的快捷方式:在當前文件夾下,注意不選中任何文件和文件夾,按住shift鍵,同時點擊鼠標右鍵,出現菜單欄,選擇“在此處打開powershell窗口”即可。

二、命令行執行報錯:“**.jar中沒有主清單屬性”——解決辦法:

         

          這是由於META-INF/MANIFEST.MF文件中,缺少了Main-Class屬性配置項,這個配置項指定了jar命令運行方式的程序入口類;

三、命令行執行報錯:“Error: Invalid or corrupt jarfile **.jar”——解決辦法:

          

          這是由於雖然META-INF/MANIFEST.MF文件中有Main-Class屬性配置項,但是內容爲空或者缺少空格;

           小提示:以下是需要注意的各個要點: 
           1. Manifest-Version、Main-Class和Class-Path後面跟着一個英文的冒號,冒號後面必須跟着一個空格,然後纔是版本號、類和ClassPath。 
           2. Class-Path中的各項應使用空格分隔,不是逗號或分號。 
           3. Class-Path中如果有很多項,寫成一行打包的時候會報錯line too long,這時需要把Class-Path分多行寫。注意:從第二行開始,必須以兩個空格開頭,三個以上我沒試過,不過不用空格開頭和一個空格開頭都是不行的,我已經試過了。 
           4. Class-Path寫完之後最後一定要有一個空行。 
           5. jar包內有些配置文件想放在jar包外面,比如文件config.properties:如果這個文件是以路徑方式載入的,比如new file("./config/config.properties"),那麼將config.properties放在jar包相同目錄下的config目錄下即可,也就是說“./”路徑等價於jar包所在目錄;如果這個文件是以ClassPath下的文件這種方式載入的,比如在Spring中載入classpath:config.properties,則在MF文件的配置文件的ClassPath中添加“./”,然後將這個配置文件與jar包放在同一個目錄即可,當然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然後把配置文件都放在jar包相同目錄下的config目錄下。

四、“錯誤:找不到或無法加載主類 **.jar ”——包名、類名寫錯,按照正確的寫法:包名.類名,如: e2w.Main00

小提示:關於MANIFEST.MF文件詳解,請參考MANIFEST.MF文件詳解

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