打包jar包指令

以下是将 Java 项目正确打包为可使用的 JAR 文件的详细步骤,适用于普通 Java 项目(非 Maven/Gradle 管理):

前提准备

假设你的项目结构如下(以之前的ArrayUtil.java为例):

plaintext

1
2
3
4
myproject/                  # 项目根目录
└── src/ # 源代码目录
└── util/ # 包名目录
└── ArrayUtil.java # 你的Java源文件(含main方法或工具类)

步骤 1:编译 Java 源文件为 class 文件

  1. 打开命令行(Windows:cmd;Mac/Linux:Terminal)

  2. 进入项目根目录myproject

    bash

    1
    cd /path/to/myproject  # 替换为你的项目实际路径
  3. 编译ArrayUtil.java,生成.class文件(会自动创建与包结构一致的目录):

    bash

    1
    javac -d ./classes src/util/ArrayUtil.java
    • -d ./classes:指定编译后的.class文件输出到classes目录(会自动创建)
    • 执行后,会生成classes/util/ArrayUtil.class

步骤 2:创建 MANIFEST.MF 文件(可选,用于可执行 JAR)

如果需要通过java -jar直接运行 JAR(即 JAR 包含主程序入口),需创建清单文件:

  1. 在项目根目录创建META-INF文件夹:

    bash

    1
    mkdir -p META-INF  # Windows可手动创建
  2. META-INF文件夹中创建MANIFEST.MF文件,内容如下:

    plaintext

    1
    2
    Manifest-Version: 1.0
    Main-Class: util.ArrayUtil # 主类的完整包名+类名(含main方法的类)
    • 注意:文件最后必须留一个空行,否则会失效

步骤 3:使用 jar 命令打包 class 文件

  1. 进入classes目录(存放.class文件的目录):

    bash

    1
    cd classes
  2. 执行打包命令:

    • 如果是普通 JAR(作为库引用,不需要 main 方法)

      bash

      1
      jar -cvf ../myutil.jar *
    • 如果是可执行 JAR(需要 main 方法,需指定 MANIFEST)

      bash

      1
      jar -cvfm ../myutil.jar ../META-INF/MANIFEST.MF *
    • 命令说明:

      • c:创建新 JAR 包
      • v:显示打包过程(可选)
      • f:指定输出的 JAR 文件名(这里是myutil.jar
      • m:指定 MANIFEST.MF 文件(仅可执行 JAR 需要)
      • *:打包当前目录下的所有文件(即包结构和.class文件)

步骤 4:验证 JAR 包

  1. 查看 JAR 包内容,确认包含.class文件:

    bash

    1
    jar -tf ../myutil.jar

    正常输出应包含:util/ArrayUtil.class(及其他类文件)

  2. 测试使用:

    • 普通 JAR(作为库):在其他项目中引用

      bash

      1
      2
      3
      4
      # 编译依赖该JAR的Java文件
      javac -cp ../myutil.jar YourJavaFile.java
      # 运行
      java -cp ../myutil.jar:. YourMainClass
    • 可执行 JAR:直接运行

      bash

      1
      java -jar ../myutil.jar

常见问题解决

  • 如果提示 “找不到主类”:检查MANIFEST.MF中的Main-Class是否正确(包名 + 类名是否匹配)
  • 如果提示 “ClassNotFoundException”:确认 JAR 包中是否包含对应的.class文件(用jar -tf检查)
  • 如果有第三方依赖:需在MANIFEST.MF中通过Class-Path指定依赖 JAR 的路径,或使用 Maven/Gradle 打 “胖 JAR”(包含所有依赖)

按照以上步骤,就能生成可正常使用的 JAR 包了。

分享