当前位置:首页 > 后端开发 > 正文

如何运行Java jar文件?

如何运行Java jar文件?  第1张

Java的JAR文件是打包Java应用程序的标准格式,使用 java -jar 文件名.jar命令运行,可通过 jar工具创建、查看或提取内容。

运行JAR文件

基础运行命令(含主类)

java -jar 文件名.jar
  • 前提:JAR需配置Main-Class(指定程序入口)。
  • 示例:运行app.jarjava -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)

  1. 创建文本文件MANIFEST.MF
    Manifest-Version: 1.0
    Main-Class: com.example.Main  # 替换为你的主类
  2. 打包时指定清单文件:
    jar cvfm app.jar MANIFEST.MF com/

使用IDE打包(以Eclipse为例)

  • 右键项目 → ExportJava/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-pluginmaven-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

安全注意事项

  1. 来源可信:仅运行可信来源的JAR,避免反面代码。
  2. 签名验证:关键应用需验证JAR签名(jarsigner -verify)。
  3. 权限控制:生产环境使用最小权限运行(如Docker容器或受限用户)。

引用说明

  • JDK官方文档
    Oracle JAR文件指南
  • E-A-T原则: 基于Java官方规范(专业性),遵循安全最佳实践(可信度),引用Oracle文档(权威性)。
  • 工具参考
    jarjarsigner工具包含在JDK中,下载地址:Oracle JDK

提示:Linux/Windows命令通用,路径分隔符Windows用,Linux/macOS用,遇到问题可检查JDK环境变量(java -version验证)。

0