上一篇                     
               
			  Java打包JAR文件详细步骤
- 后端开发
- 2025-06-29
- 2676
 使用javac编译Java文件,然后通过jar命令打包成JAR文件,命令示例:
 
 
jar cvf 程序名.jar 主类名.class,或利用IDE(如Eclipse/IntelliJ)直接导出可执行JAR,需指定主类入口。
将Java程序打包成JAR文件是分发和运行Java应用的标准方式,以下是详细的操作指南,涵盖命令行和主流IDE两种方法,确保符合最佳实践:

核心概念
- JAR文件本质
 JAR(Java Archive)是基于ZIP格式的压缩包,包含.class文件、资源文件及元数据(如MANIFEST.MF),可指定主类实现双击运行。
- 清单文件(MANIFEST.MF)作用
 位于META-INF/目录下,定义JAR属性(如主类路径、依赖库路径),格式要求:Main-Class: com.example.MainClass // 末尾必须空一行 Class-Path: lib/dependency.jar // 每行不超过72字符 
命令行打包(JDK原生方式)
步骤1:编译Java代码
javac -d ./build src/*.java # 将源码编译到build目录
- 确保JDK已安装(检查命令:javac -version)
步骤2:创建清单文件
- 在build/目录新建MANIFEST.MF:Main-Class: com.example.MainClass # 注意:末尾保留一个空行 
步骤3:打包JAR
cd build
jar cfm app.jar MANIFEST.MF com/*   # 关键参数:
                                    # c-创建JAR, f-指定文件名, m-引用清单文件 
步骤4:运行验证
java -jar app.jar # 测试执行
使用IDE打包(更高效)
▶ Eclipse操作流程
- 右击项目 → Export → 搜索”Runnable JAR”
- 配置选项: 
  - Launch configuration:选择包含main方法的类
- Export destination:输出路径(如app.jar)
- Library handling:选Package required libraries(自动包含依赖)
 
▶ IntelliJ IDEA操作流程
- File → Project Structure → Artifacts → + → JAR → From modules…
- 选择主类(Main Class)
- 勾选Build on make→ 点击Apply
- Build → Build Artifacts → 生成JAR文件
包含外部依赖的打包方案
方案1:生成FatJAR(推荐)
- 使用Maven:在pom.xml中添加插件:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs>jar-with-dependencies</descriptorRefs> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>执行: mvn clean compile assembly:single 
方案2:分离依赖库
- 将依赖JAR放入lib/目录
- 清单文件中声明路径: Class-Path: lib/gson-2.8.9.jar lib/commons-io-2.11.jar 
- 最终目录结构: app.jar lib/ ├─ gson-2.8.9.jar └─ commons-io-2.11.jar 
常见问题解决
- “no main manifest attribute”
 → 清单文件未指定Main-Class或格式错误(需末尾空行)
- ClassNotFoundException
 → 检查Class-Path路径是否正确,依赖JAR是否缺失
- 中文乱码问题
 → 编译时指定编码:javac -encoding UTF-8 ...
- 模块化项目(JDK9+)
 → 添加module-info.java或使用jlink定制运行时
安全与优化建议
- 代码签名:防止改动 jarsigner -keystore mykey.jks app.jar alias_name 
- 压缩资源:减小体积 jar cvfm app.jar MANIFEST.MF -C ./build . # 自动压缩 
引用说明参考Oracle官方文档《JAR File Specification》及Apache Maven最佳实践,操作均通过JDK 17环境验证,IDE操作步骤基于Eclipse 2025-03与IntelliJ IDEA 2025.1版本,命令行工具为各平台通用标准,Windows/Linux/macOS均可执行。

 
			