將 Java 程式打包成可雙擊運行的 JAR,免去命令行 java -cp ... MainClass 的麻煩。
C:\demo> javac MyMenuTest.java
產生多個 .class 文件(含內部類)。
在源文件首行添加包聲明:
package mymenu;
重新編譯並指定輸出目錄:
C:\demo> javac -d . MyMenuTest.java
生成的 class 文件將位於 ./mymenu/ 目錄下。
在 mymenu 所在目錄新建文本文件(如 manifest.txt),內容:
Main-Class: mymenu.MyMenuTest
關鍵規則:
C:\demo> jar -cvfm my.jar manifest.txt mymenu
參數說明:
c:創建新檔案v:顯示詳細過程f:指定輸出文件名m:引入自定義 Manifest雙擊 my.jar 或命令行:
java -jar my.jar
程式正常啟動,打包成功。
| 現象 | 原因 | 解決 |
|---|---|---|
| 雙擊無反應 | 未關聯 javaw.exe / JRE 未安裝 | 安裝 JRE,或用命令行運行排查 |
| 找不到主類 | Manifest 格式錯誤(缺空格/換行) | 嚴格遵循「冒號+空格」、「末尾換行」 |
| ClassNotFoundException | 包路徑與 Manifest 主類不一致 | 確保 package、目錄結構、Manifest 三者一致 |
實際專案建議使用 maven-shade-plugin 或 maven-jar-plugin 配置 Main-Class,構建過程自動生成可執行 JAR。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>mymenu.MyMenuTest</mainClass>
</manifest>
</archive>
</configuration>
</plugin>