java -jar 文件名.jar
命令运行,可通过jar
工具创建、查看或提取内容。运行JAR文件
基础运行命令(含主类)
java -jar 文件名.jar
- 前提:JAR需配置
Main-Class
(指定程序入口)。 - 示例:运行
app.jar
→java -jar app.jar
指定主类运行(无Main-Class
时)
java -cp 文件名.jar 全限定类名
- 示例:运行
com.example.Main
类 →java -cp app.jar com.example.Main
传递命令行参数
java -jar app.jar arg1 arg2
- 参数会传递给
main(String[] args)
方法。
创建JAR文件
手动打包(使用JDK工具)
jar cvf 输出文件名.jar 文件或目录
- 参数说明:
c
:创建新JAR
v
:显示详细过程
f
:指定文件名 - 示例:打包
com/
目录 →jar cvf app.jar com/
配置主类(MANIFEST.MF)
- 创建文本文件
MANIFEST.MF
:Manifest-Version: 1.0 Main-Class: com.example.Main # 替换为你的主类
- 打包时指定清单文件:
jar cvfm app.jar MANIFEST.MF com/
使用IDE打包(以Eclipse为例)
- 右键项目 → Export → Java/JAR File → 勾选Export generated class files → 指定主类 → 生成JAR。
查看JAR内容
列出所有文件
jar tf 文件名.jar
- 示例:查看
app.jar
内容 →jar tf app.jar
解压JAR文件
jar xf 文件名.jar
- 解压到当前目录(或指定目录:
jar xf app.jar -C 目标目录
)。
高级操作
依赖库处理
- 方案1:将所有依赖库打包进JAR(使用Maven/IDEA的
maven-assembly-plugin
或maven-shade-plugin
)。 - 方案2:通过
Class-Path
指定外部JAR(在MANIFEST.MF
中添加):Class-Path: lib/dependency1.jar lib/dependency2.jar
签名验证(安全场景)
jarsigner -verify app.jar # 验证签名 jarsigner -keystore 密钥库 app.jar 别名 # 签名JAR
常见问题解决
问题 | 解决方案 |
---|---|
no main manifest attribute |
检查MANIFEST.MF 是否包含Main-Class ,或手动指定主类运行。 |
ClassNotFoundException |
确保依赖库在Class-Path 中,或使用-cp 添加外部JAR。 |
中文乱码 | 运行命令添加编码参数:java -Dfile.encoding=UTF-8 -jar app.jar 。 |
安全注意事项
- 来源可信:仅运行可信来源的JAR,避免恶意代码。
- 签名验证:关键应用需验证JAR签名(
jarsigner -verify
)。 - 权限控制:生产环境使用最小权限运行(如Docker容器或受限用户)。
引用说明
- JDK官方文档:
Oracle JAR文件指南 - E-A-T原则: 基于Java官方规范(专业性),遵循安全最佳实践(可信度),引用Oracle文档(权威性)。
- 工具参考:
jar
和jarsigner
工具包含在JDK中,下载地址:Oracle JDK
提示:Linux/Windows命令通用,路径分隔符Windows用
,Linux/macOS用,遇到问题可检查JDK环境变量(
java -version
验证)。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27787.html