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

相关推荐

  • Win7如何打开CMD?多种方法详解

    在Windows 7中打开CMD的可靠方法:通过开始菜单搜索框输入“cmd”运行;在开始菜单“所有程序”的“附件”中找到;按Win+R输入“cmd”运行;在文件夹中Shift+右键选“打开命令窗口”;或创建快捷方式。

    2025年7月2日
    800
  • Ubuntu命令必须掌握吗

    在Ubuntu系统中,命令行(Terminal)是高效管理系统的核心工具,它通过文本指令直接与操作系统交互,适用于文件管理、软件安装、网络配置等任务,以下内容将详细解析Ubuntu命令的使用场景、分类及最佳实践,帮助用户安全高效地操作,效率提升图形界面操作需多次点击,而命令如 cp file1.txt /bac……

    2025年6月17日
    1400
  • PE命令如何高效编辑多段线?

    CAD的PE命令(PEDIT)是编辑多段线的核心工具,用于合并线段、修改宽度、曲线拟合、顶点编辑等,优化多段线结构。

    5天前
    800
  • 如何安全重命名SQL Server数据库?

    核心步骤设置单用户模式确保独占访问权限,防止其他连接干扰操作:ALTER DATABASE [原数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;ROLLBACK IMMEDIATE 强制终止现有连接,操作前请确认无关键事务运行,执行重命名命令使用系统存储过程修改数据库……

    2025年6月13日
    1300
  • Linux关机误操作?如何取消关机命令

    方法1:取消已计划的 shutdown 命令这是最常见的情况,当您使用 shutdown 命令设置了延迟关机(如 shutdown -h 10)时:按组合键 Ctrl + Alt + T 打开终端输入命令: sudo shutdown -c-c 参数表示取消(cancel)计划中的关机,系统会广播取消通知所有登……

    2025年7月5日
    1200

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信