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

环境准备

  1. 安装JDK

    • 验证安装:终端执行 java -versionjar --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

相关推荐

  • ASP随机生成颜色的方法是什么?如何实现代码与随机性?

    在网页开发中,随机生成颜色常用于动态页面设计、数据可视化或用户个性化场景,ASP(Active Server Pages)作为经典的Web开发技术,可通过VBScript脚本实现随机颜色的生成,颜色的本质是光的不同波长组合,在数字领域通常用RGB(红、绿、蓝)三原色模型表示,每个颜色通道的取值范围是0-255……

    2025年11月6日
    2600
  • asushipost是什么软件?功能与用途解析

    asushipost是华硕集团推出的一款专注于物流管理的智能化软件平台,主要服务于电商卖家、跨境商家及华硕生态链合作伙伴,旨在通过数字化手段整合物流资源、优化配送流程,为用户提供从订单处理到包裹签收的全链路物流解决方案,该软件以高效、稳定、智能为核心特点,深度结合华硕在全球供应链领域的经验,尤其针对3C电子产品……

    2025年10月19日
    3200
  • asp通讯录系统

    ASP通讯录系统是一种基于Active Server Pages(ASP)技术开发的信息化管理工具,主要用于集中存储、高效查询和便捷维护联系人信息,随着组织规模的扩大和个人社交圈的复杂化,传统纸质通讯录或分散的电子通讯录已难以满足信息同步与共享的需求,而ASP通讯录系统凭借其轻量化、易部署和跨平台等特性,成为中……

    2025年11月19日
    1200
  • CentOS下SSH连接失败怎么办?

    基础连接方法安装SSH客户端CentOS通常预装OpenSSH客户端,若未安装则执行:sudo yum install openssh-clients # CentOS 7sudo dnf install openssh-clients # CentOS 8+基本连接命令ssh username@server……

    2025年7月7日
    6000
  • ASP随机在线人数显示的具体技术实现方式是什么?

    在网站开发与管理中,实时了解在线用户数量是评估网站活跃度、优化服务器资源以及提升用户体验的重要环节,对于使用ASP(Active Server Pages)技术的网站而言,实现“随机在线人数”统计(即动态显示当前实时在线用户数)是一项常见且实用的功能,本文将详细解析ASP实现随机在线人数统计的原理、方法、技术细……

    2025年11月16日
    1900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信