如何用jar命令正确打包Java项目?

环境准备

  1. 安装JDK

    • 验证安装:终端执行 java -version 和 jar --version
    • 输出示例:
      jar 17.0.7 (Oracle Corporation)
  2. 项目结构示例

    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|


验证与运行

  1. 检查清单:

    unzip -p myapp.jar META-INF/MANIFEST.MF
  2. 运行可执行JAR:

    java -jar custom.jar  # 需配置Main-Class

常见问题解决

  • 错误:no main manifest attribute
    原因:未指定Main-Class
    修复:在MANIFEST.MF中添加Main-Class: com.example.Main

  • 依赖加载失败
    确保:

    1. 依赖JAR位于Class-Path声明的相对路径
    2. 主JAR与依赖库在同一目录层级

安全提示

  1. 签名验证:
    jarsigner -verify -verbose myapp.jar
  2. 禁止加载未签名远程代码,防止恶意注入。

引用说明遵循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

赞 (0)
酷番叔酷番叔
上一篇 2025年6月12日 18:15
下一篇 2025年6月12日 18:46

相关推荐

  • 国际业务中台服务申请流程是什么,国际业务中台

    企业应优先选择具备跨境合规资质、支持多币种实时结算且API接口标准化的头部云服务商,通过“业务中台+数据中台”双轮驱动模式,实现全球供应链、营销与财务的数字化统一管控,从而将海外业务响应速度提升40%以上并降低30%的合规风险,国际业务中台的核心价值与架构解析在2026年全球数字化贸易加速融合的背景下,中台已不……

    2026年5月16日
    14400
  • ASP留言板如何实现简洁高效?

    ASP简洁留言板设计与实现在Web开发中,留言板是常见的互动功能模块,ASP(Active Server Pages)作为一种成熟的服务器端脚本技术,能够快速构建简洁高效的留言板系统,本文将介绍ASP留言板的核心设计思路、功能实现及优化方法,帮助开发者快速上手,系统需求分析一个简洁的留言板应满足以下基本需求:用……

    2025年12月13日
    17000
  • asp选项卡如何实现动态切换?

    在Web开发中,用户界面的友好性和交互性直接影响用户体验,ASP选项卡作为一种常见的界面组件,能够有效组织内容、节省页面空间,并提升用户操作的便捷性,本文将详细介绍ASP选项卡的概念、实现方式、应用场景及优化技巧,帮助开发者更好地理解和应用这一技术,ASP选项卡的基本概念ASP选项卡(Tab Control)是……

    2025年11月27日
    20100
  • ASP如何准确获取地址栏参数值?

    在Web开发中,获取地址栏内容是一项常见的需求,尤其是在处理页面参数传递、路由导航或数据分析时,ASP(Active Server Pages)作为一种经典的Web开发技术,提供了多种方式来获取地址栏中的信息,如URL参数、路径信息或查询字符串,本文将详细介绍ASP获取地址栏内容的方法,并结合实例和表格进行说明……

    2025年12月10日
    18600
  • asyncsocket接收数据时如何保证数据完整性和顺序?

    在网络编程中,Socket通信是实现数据传输的基础,而异步Socket以其高并发、低延迟的特性,成为现代高性能网络服务器的核心选择,数据接收作为异步Socket的关键环节,其设计的合理性与实现的优劣,直接关系到整个通信系统的稳定性和效率,本文将围绕异步Socket接收数据的机制、实现流程、缓冲区管理及优化方向展……

    2025年11月17日
    20600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信