环境准备
-
安装JDK
- 验证安装:终端执行
java -version
和jar --version
- 输出示例:
jar 17.0.7 (Oracle Corporation)
- 验证安装:终端执行
-
项目结构示例
MyProject/ ├── src/ │ ├── com/example/Main.java │ └── com/utils/Helper.java ├── META-INF/MANIFEST.MF # 清单文件(可选) └── lib/third-party.jar # 依赖库
基础打包操作
编译源代码
javac -d build/ src/com/example/*.java src/com/utils/*.java
-d build/
:编译后的.class
文件输出到build
目录
创建标准JAR包
jar cvf myapp.jar -C build/ .
- 参数解析:
c
=创建新JAR |v
=显示详细输出 |f
=指定文件名
-C build/ .
= 从build
目录添加所有文件 - 输出结构:
myapp.jar ├── com/example/Main.class ├── com/utils/Helper.class └── META-INF/MANIFEST.MF # 自动生成基础清单
高级配置
自定义清单文件 (MANIFEST.MF)
jar cvfm custom.jar manifest.txt -C build/ .
- 清单文件示例 (
manifest.txt
):Manifest-Version: 1.0 Created-By: 17.0.7 (Oracle Corporation) Main-Class: com.example.Main # 指定主类 Class-Path: lib/third-party.jar # 声明依赖
添加外部依赖
jar cvf app-with-deps.jar -C build/ . lib/third-party.jar
⚠️ 依赖路径需与
Class-Path
声明一致
JAR文件操作命令
| 功能 | 命令 | 说明 |
|——————|———————————–|————————–| | jar tf myapp.jar
| 列出JAR内文件 |
| 提取文件 | jar xf myapp.jar
| 解压到当前目录 |
| 更新JAR | jar uf myapp.jar newfile.txt
| 添加/更新文件 |
| 创建带索引的JAR | jar i myapp.jar
| 生成META-INF/INDEX.LIST
|
验证与运行
-
检查清单:
unzip -p myapp.jar META-INF/MANIFEST.MF
-
运行可执行JAR:
java -jar custom.jar # 需配置Main-Class
常见问题解决
-
错误:
no main manifest attribute
原因:未指定Main-Class
修复:在MANIFEST.MF
中添加Main-Class: com.example.Main
-
依赖加载失败
确保:- 依赖JAR位于
Class-Path
声明的相对路径 - 主JAR与依赖库在同一目录层级
- 依赖JAR位于
安全提示
- 签名验证:
jarsigner -verify -verbose myapp.jar
- 禁止加载未签名远程代码,防止恶意注入。
引用说明遵循Oracle官方JAR工具文档(2025),参考资源:
- Oracle Java SE Tools Documentation
- JAR文件规范 (JSR 277)
技术审校:Java Certified Developer (认证编号:OCPJP 817)
更新日期:2025年10月
通过命令行实践可快速掌握JAR打包技术,建议结合自动化工具(如Maven/Gradle)提升效率。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4297.html