
本文详解 Windows CMD 下使用 jar 命令生成可执行 JAR 文件的完整流程,纠正常见命令误用(如混淆 java -jar 与 jar -cfv),并说明清单文件(MANIFEST.MF)的关键作用。
本文详解 windows cmd 下使用 `jar` 命令生成可执行 jar 文件的完整流程,纠正常见命令误用(如混淆 `java -jar` 与 `jar -cfv`),并说明清单文件(manifest.mf)的关键作用。
在 Windows 命令行中创建可执行 JAR 文件失败,最常见的原因是误将 java 命令当作打包工具使用。你输入的命令:
java -jar -cfv myJar.jar Test.class
是错误的——java -jar 用于运行已存在的 JAR 文件,而非创建它;而 -c、-f、-v 是 jar 工具自身的参数。正确做法是调用 jar 命令(JDK 自带的归档工具),而非 java。
✅ 正确步骤如下(以 Test.class 为例):
确保
Test.class具有主方法(即含public static void main(String[] args));-
创建 MANIFEST.MF 清单文件(声明入口类),内容如下:
Manifest-Version: 1.0 Main-Class: Test
⚠️ 注意:
Main-Class后必须跟一个换行符(空行),且类名不带.class后缀;保存为 UTF-8 编码(无 BOM); -
在
Test.class所在目录下执行打包命令:
Windows TTS (WSL2)下载在 Windows 11 上"直接发声"的 TTS(从 WSL2/TUI 调用 powershell.exe + System.Speech)。适用于用户说"说出来/读出来/语音播报/用TTS",或反馈"没声音/tts 生成的 mp3 是空的/播不出来",以及需要中文语音但 OpenClaw 内置 tts 不可用时。
jar -cvfm myJar.jar MANIFEST.MF Test.class
参数含义:
-c→ 创建新归档-v→ 显示详细过程-f→ 指定 JAR 文件名-m→ 指定清单文件(MANIFEST.MF) -
验证并运行:
java -jar myJar.jar
应输出
Hello World。
? 补充说明:
- 若省略
-m和清单文件,生成的 JAR 仅为普通归档,不可执行(java -jar会报no main manifest attribute); -
javac只负责编译,jar才是 JDK 提供的标准打包工具;现代开发中虽常用 Maven/Gradle 或 IDE(如 Eclipse 的 Export → Runnable JAR),但掌握原生命令对理解 Java 构建原理至关重要; - 路径中避免中文或空格,建议使用短英文路径(如
C:\junk),并确认JAVA_HOME\bin已加入系统PATH。
掌握这一流程,即可脱离 IDE 独立完成轻量级 Java 程序的打包与分发。










