如何將 Java 項目打包為可執行 JAR 文件
我將詳細介紹將 Java 項目打包為可執行 JAR 文件的完整流程,包括使用 IDE 和命令行兩種方法。
方法一:使用 IntelliJ IDEA 打包
步驟 1:配置項目結構
打開項目
點擊 File > Project Structure
在 Project Settings 中選擇 Artifacts
點擊 + 號 > JAR > From modules with dependencies
步驟 2:配置主類
在 "Main Class" 字段選擇主類:例如:
com.example.demo.DesktopFileSearch
確保選擇 "extract to the target JAR" 選項
點擊 OK
步驟 3:構建 JAR 文件
點擊 Build > Build Artifacts
選擇您的 artifact > Build
生成的 JAR 文件將位于?
out/artifacts/
?目錄下
方法二:使用 Maven 打包
步驟 1:添加 Maven 插件
在?pom.xml
?中添加以下插件配置:
<build><plugins><!-- 編譯插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 創建可執行 JAR 的插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><configuration><archive><manifest><addClasspath>true</addClasspath><mainClass>com.example.demo.DesktopFileSearch</mainClass></manifest></archive></configuration></plugin><!-- 包含依賴的插件(可選) --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><mainClass>com.example.demo.DesktopFileSearch</mainClass></manifest></archive><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins>
</build>
步驟 2:執行打包命令
在項目根目錄(包含 pom.xml 的目錄)打開命令行,執行:
mvn clean package
步驟 3:獲取 JAR 文件
生成的 JAR 文件位于?
target/
?目錄如果使用了 assembly 插件,會生成兩個文件:
your-project-name.jar
?- 不含依賴your-project-name-jar-with-dependencies.jar
?- 包含所有依賴
方法三:使用 Gradle 打包
步驟 1:配置 build.gradle
在?build.gradle
?文件中添加:
plugins {id 'java'id 'application'
}application {mainClassName = 'com.example.demo.DesktopFileSearch'
}jar {manifest {attributes 'Main-Class': 'com.example.demo.DesktopFileSearch'}// 包含所有依賴(可選)from {configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }}
}
步驟 2:執行打包命令
在項目根目錄執行:
gradle clean build
步驟 3:獲取 JAR 文件
生成的 JAR 文件位于?build/libs/
?目錄
方法四:手動創建 JAR(不使用構建工具)
步驟 1:編譯 Java 文件
javac -d target/classes src/main/java/com/example/demo/*.java
步驟 2:創建清單文件
創建?META-INF/MANIFEST.MF
?文件:
Manifest-Version: 1.0
Main-Class: com.example.demo.DesktopFileSearch
Class-Path: .
步驟 3:打包為 JAR
jar cfm target/your-app.jar META-INF/MANIFEST.MF -C target/classes .
測試 JAR 文件
運行 JAR 文件以確保正確打包:
java -jar your-app.jar
常見問題解決
問題:運行 JAR 時出現 "No main manifest attribute"
解決方案:
確保 MANIFEST.MF 文件包含正確的 Main-Class 屬性
使用?
jar tf your-app.jar
?檢查清單文件是否正確包含如果使用 Maven/Gradle,確保插件配置正確
問題:缺少依賴項
解決方案:
使用包含依賴的打包方式(如 maven-assembly-plugin)
將所有依賴 JAR 放在同一目錄,使用?
-cp
?指定類路徑:java -cp "your-app.jar:libs/*" com.example.demo.DesktopFileSearch
問題:資源文件未包含
解決方案:
確保資源文件位于正確位置(如 src/main/resources)
在構建配置中包含資源目錄:
java -cp "your-app.jar:libs/*" com.example.demo.DesktopFileSearch
最佳實踐
版本控制:在 JAR 文件名中包含版本號
依賴管理:
對于簡單項目,使用包含依賴的單一 JAR
對于大型項目,使用 lib 目錄存放依賴
簽名驗證:使用 jarsigner 對 JAR 進行簽名
jarsigner -keystore mykeystore.jks -storepass password -keypass password your-app.jar mykey
瘦身打包:使用 ProGuard 或其它工具減小 JAR 大小
跨平臺測試:在不同操作系統上測試 JAR 文件
總結打包 Java 應用程序為 JAR 文件是分發和部署的關鍵步驟。選擇適合您項目的打包方法:
簡單項目:使用 IDE 內置的導出功能
標準項目:使用 Maven 或 Gradle 構建
需要依賴管理:使用包含依賴的打包方式
特殊需求:手動創建 JAR 文件
完成 JAR 打包后,您可以進一步使用 Launch4j 或 jpackage 工具將其轉換為 EXE 文件,創建完整的 Windows 安裝程序。