如何用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系统而言,集成指纹识别功能不仅能提升安全性,还能优化用户体验,本文将详细介绍ASP调用指纹技术的核心原理、开发环境搭建、具体……

    2025年11月14日
    5400
  • 如何快速搭建运行环境?轻松搞定!

    连接设备Console线连接:使用串口线连接电脑与H3C设备的Console口,通过终端软件(如PuTTY/Xshell)设置参数:波特率9600、数据位8、停止位1、无校验(默认),远程登录:若设备已配置IP,可通过SSH/Telnet登录: ssh username@设备IP # 推荐更安全的SSHteln……

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

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

    2025年7月8日
    12300
  • 为什么 du 命令的文件大小与实际不符?

    du 的核心作用:磁盘占用空间(Disk Usage)du 统计的是文件或目录实际占用的磁盘块数量,而非文件的“逻辑大小”,关键区别在于:块大小(Block Size)磁盘存储以固定大小的“块”为单位(4KB),即使一个文件只有 1 字节,它也会独占至少 1 个块(即显示 4KB),示例:echo &quot……

    2025年7月6日
    11900
  • Ubuntu终端关不掉怎么办?

    常规关闭方法(推荐)关闭终端窗口(图形界面)步骤:直接点击终端窗口右上角的 按钮,或按快捷键 Ctrl + Alt + W(部分桌面环境支持),适用场景:无程序运行时快速关闭,系统会自动终止关联进程,通过命令退出(终端内操作)安全退出当前会话:输入命令 exit 或按 Ctrl + D(若存在子进程,系统会提示……

    2025年6月24日
    11900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信