JDK中的jar命令是Java开发工具包自带的归档工具,主要用于将多个Java类文件、资源文件打包成Jar格式的文件,其中可执行Jar包可以直接通过java -jar命令运行,是Java应用分发和部署的常用格式。掌握jar命令的参数和使用方法,能够让你不依赖IDE就完成Java应用的打包工作,更灵活地控制打包过程。

jar命令的核心参数说明
jar命令的基本语法是jar [选项] [jar包名称] [输入文件/目录],常用的参数如下:
- -c:创建新的Jar包
- -v:在打包过程中输出详细信息,方便查看打包的文件列表
- -f:指定生成的Jar包名称
- -m:指定自定义的manifest文件,用于配置Jar包的元数据,比如主类信息
- -e:直接指定Jar包的主类,不需要单独编写manifest文件,是JDK较新版本提供的简化参数
- -x:解压已有的Jar包
- -t:列出Jar包内的文件列表
- -u:更新已有的Jar包内容
手动打包可执行Jar包的两种方式
方式一:使用-e参数直接指定主类
如果你的JDK版本支持-e参数,这种方式是最简便的,不需要额外编写manifest文件。假设我们有一个简单的Java主类,代码如下:
// 主类代码,包名为com.example
package com.example;
public class MainApp {
public static void main(String[] args) {
System.out.println("Hello, 可执行Jar包运行成功!");
}
}
首先编译这个Java文件,生成class文件:
javac com/example/MainApp.java
然后使用jar命令打包,指定主类为com.example.MainApp:
jar -cvfe app.jar com.example.MainApp com/
命令参数说明:-c创建Jar包,-v输出详细信息,-f指定Jar包名为app.jar,-e指定主类为com.example.MainApp,最后是要打包的目录com/,里面包含了编译后的class文件。打包完成后,可以直接运行:
java -jar app.jar
控制台会输出"Hello, 可执行Jar包运行成功!",说明打包成功。
方式二:使用-m参数指定自定义manifest文件
如果需要配置更多Jar包元数据,比如添加类路径、指定版本信息等,可以使用自定义manifest文件的方式。首先编写一个manifest.txt文件,内容如下:
Manifest-Version: 1.0 Main-Class: com.example.MainApp Class-Path: .
注意manifest文件的最后必须有一个空行,否则jar命令可能无法正确读取配置。然后使用以下命令打包:
jar -cvfm app.jar manifest.txt com/
参数说明:-m指定使用manifest.txt作为manifest文件,其他参数和之前一致。打包完成后同样可以用java -jar app.jar运行,效果和方式一相同。
常见问题与解决方法
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 运行Jar包提示"没有主清单属性" | manifest文件中没有正确配置Main-Class,或者manifest文件格式错误 | 检查manifest文件的Main-Class是否正确,确保文件最后有空行,重新打包 |
| 提示找不到主类 | 主类的全限定名写错,或者class文件没有在打包的目录中 | 核对主类全限定名,检查打包的目录是否包含正确的class文件 |
| 打包后运行提示依赖类找不到 | 应用依赖的第三方Jar包没有在Class-Path中配置 | 在manifest文件的Class-Path中添加依赖Jar包的路径,多个路径用空格分隔 |
jar命令的其他实用操作
除了打包,jar命令还可以用来查看和解压Jar包内容。查看Jar包内的文件列表:
jar -tf app.jar
解压Jar包到当前目录:
jar -xf app.jar
如果需要在已有的Jar包中添加新的文件,可以使用-u参数更新:
jar -uvf app.jar 新增的文件或目录
jar命令JDKJava打包可执行Jar包manifest文件修改时间:2026-06-09 06:48:24