如何用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

相关推荐

  • 命令符文就是命令方块吗?

    “命令符文”是玩家对《我的世界》中命令方块的别称,这个特殊方块能通过输入游戏指令实现自动化操作、生成实体或改变游戏规则,是创造模式下的高级功能。

    2025年7月19日
    2700
  • 如何在Windows命令窗口快速运行C+文件?

    第一步:安装 C++ 编译器Windows 系统需安装编译器(如 MinGW):下载 MinGW 安装器,运行安装程序,勾选 mingw32-gcc-g++(C++ 编译器组件),完成安装后,配置环境变量:打开系统设置 → 搜索“环境变量” → 编辑“Path”,添加 MinGW 的 bin 目录路径(C:\M……

    2025年7月4日
    3100
  • 如何安全彻底删除各类模拟器?

    Android Studio 模拟器 (AVD)Windows/Mac/Linux 通用步骤打开终端Windows: 按 Win+R 输入 cmdMac/Linux: 打开 Terminal列出所有模拟器输入命令查看已创建的 AVD 名称:emulator -list-avds删除目标模拟器替换 Your_AV……

    2025年6月28日
    2900
  • 如何用cd命令快速切换目录?

    cd命令是DOS切换工作目录的核心工具,通过指定绝对或相对路径改变当前操作位置,支持使用”..”返回上级目录及直接切换驱动器盘符。

    2025年7月8日
    3400
  • NASM中cd命令的核心疑问是哪两点?

    cd是操作系统命令,与NASM无关;NASM是汇编编译器,需通过命令行调用,以下是具体使用场景和步骤:为什么要在NASM中使用cd命令?切换工作目录:当汇编源文件(.asm)位于其他文件夹时,需用cd进入该目录再调用NASM编译,组织项目文件:避免文件路径过长,提高编译效率,具体操作步骤(以Windows和Li……

    2025年7月2日
    3400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信