环境准备
- 安装JDK
- 从Oracle官网下载JDK(推荐JDK 8+),安装后配置环境变量:
- 添加
JAVA_HOME
:值为JDK安装路径(如C:Program FilesJavajdk1.8.0_361
)。 - 在
Path
中添加%JAVA_HOME%bin
。
- 添加
- 验证安装:
java -version jar --version
- 从Oracle官网下载JDK(推荐JDK 8+),安装后配置环境变量:
打包JAR的完整流程
步骤1:编写Java代码示例
创建文件 HelloWorld.java
:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, JAR Package!"); } }
步骤2:编译Java文件
javac HelloWorld.java
生成 HelloWorld.class
文件。
步骤3:创建清单文件(MANIFEST.MF)
新建文本文件 MANIFEST.MF
(严格格式要求):
Manifest-Version: 1.0 Main-Class: HelloWorld Created-By: 1.8.0_361 (Oracle Corporation)
⚠️ 注意:
- 末尾必须空一行(按Enter键)。
Main-Class
指定入口类(无.class
后缀)。
步骤4:执行JAR打包命令
jar cvfm myapp.jar MANIFEST.MF HelloWorld.class
- 参数说明:
c
:创建JAR包
v
:显示详细过程
f
:指定JAR文件名(myapp.jar
)
m
:指定清单文件(MANIFEST.MF
)
HelloWorld.class
:要打包的类文件(可替换为目录如com/
)
步骤5:运行JAR包
java -jar myapp.jar
成功输出:Hello, JAR Package!
高级用法
打包整个目录
若项目结构为:
src/
com/
example/
Main.class
打包命令:
jar cvfm app.jar MANIFEST.MF -C src/ .
不依赖清单文件(无主类)
jar cvf util.jar com/example/*.class
此类JAR需通过 java -cp util.jar com.example.Main
运行。
常见问题解决
-
“no main manifest attribute”
- 原因:清单文件缺少
Main-Class
或格式错误。 - 修复:检查
MANIFEST.MF
的换行和冒号后的空格。
- 原因:清单文件缺少
-
“jar不是内部命令”
- 原因:JDK环境变量未配置。
- 修复:检查
Path
是否包含%JAVA_HOME%bin
。
-
中文乱码
- 编译时指定编码:
javac -encoding UTF-8 HelloWorld.java
- 编译时指定编码:
最佳实践
- 清单文件规范:
使用工具生成(如Maven/Gradle),避免手动错误。 - 依赖管理:
大型项目用构建工具(如mvn package
)自动处理依赖。 - 验证JAR内容:
jar tf myapp.jar # 查看JAR内文件列表
引用说明基于:
- Oracle官方文档:JAR File Specification
- JDK 17命令行工具指南(
jar --help
输出) - Windows CMD环境测试验证(JDK 8/11/17)
操作需确保JDK安装正确,命令在管理员权限下运行更稳定,建议通过IDE或构建工具简化流程,但掌握原生命令对理解原理至关重要。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27148.html