电子女孩中文版手游
89.8MB · 2025-12-14
本文记录了我在 Windows PowerShell 下学习 JDK 自带 jar 命令的全过程,包括实际操作、遇到的问题和官方说明,适合 Java 初学者参考。
新建 HelloJar.java:
public class HelloJar {
public static void main(String[] args) {
System.out.println("Hello from JAR!");
}
}
编译生成 class 文件:
javac HelloJar.java
jar cf HelloJar.jar HelloJar.class
c:创建(create)f:指定 jar 文件名(file)HelloJar.jar:生成的 jar 包名HelloJar.class:要打包的 class 文件jar tf HelloJar.jar
输出示例:
META-INF/
META-INF/MANIFEST.MF
HelloJar.class
新建 manifest.txt,内容如下(注意最后有一个空行):
Main-Class: HelloJar
jar cfm HelloJar-exec.jar manifest.txt HelloJar.class
m:指定 manifest 文件java -jar HelloJar-exec.jar
输出:
Hello from JAR!
no main manifest attribute, in HelloJar-exec.jar原因: manifest 文件最后一行没有空行,导致 Main-Class 属性未被正确识别。
解决: manifest.txt 最后一行必须有换行符。
当用 jar ufm 更新 manifest 时,可能出现:
WARNING: Duplicate name in Manifest: Main-Class.
原因: jar 包里已有 manifest,再次添加会有重复属性。
影响:
Main-Class。jar cfm ... 重新打包,保持结构干净。如果 manifest 没变,只是 class 文件有变动,直接用:
jar uf HelloJar-exec.jar HelloJar.class
即可,可执行 jar 依然可用,不需要重新指定 manifest。
jar xf HelloJar-exec.jar
jar xf HelloJar-exec.jar META-INF/MANIFEST.MF
notepad META-INFMANIFEST.MF
jar 命令用于打包、查看、解压、更新 jar 文件Main-Class,manifest 文件最后要有空行jar uf,可执行属性会保留META-INF/ 和 MANIFEST.MF通过本次学习,我掌握了 jar 命令的基本用法、可执行 jar 的制作方法,以及常见问题的排查和解决。希望对你也有帮助!