Windows下创建可运行JAR报no main manifest attribute错误排查
解决JAR运行时"no main manifest attribute"错误的常见原因
1. MANIFEST.MF格式不符合要求
- 必须保留冒号后的空格:
Main-Class: Export,冒号和类名之间的空格不能省略,否则jar命令无法识别这个属性 - 文件末尾必须加空行:清单文件的最后一行必须是空行,jar工具读取时会忽略没有空行结尾的最后一条属性
- 避免UTF-8 BOM编码:Windows记事本默认保存的UTF-8文件带BOM头,会导致jar解析清单失败,建议用记事本保存时选择「ANSI」编码,或者用专业编辑器保存为「UTF-8无BOM」格式
2. jar打包命令参数顺序错误
你当前用的命令是:
jar cmvf MANIFEST.MF Inod.jar *.class
jar命令的选项连写时,f选项后面必须紧跟JAR文件名,正确的参数顺序应该是把JAR文件名放在清单文件前面,命令改为:
jar cvfm Inod.jar MANIFEST.MF *.class
解释:cvfm的含义是c(创建JAR)、v(显示打包过程)、f(指定JAR文件名)、m(指定清单文件),因此f后的第一个参数必须是JAR文件名,之后才是清单文件路径。
3. 验证打包后的清单内容
打包完成后,可以解压JAR里的清单文件检查是否正确:
jar xf Inod.jar META-INF/MANIFEST.MF
打开解压出的MANIFEST.MF,确认是否存在Main-Class: Export这一行,且格式正确。如果没有,说明打包时清单文件没有被正确读取,回到前面两步排查。
内容的提问来源于stack exchange,提问作者Inod Umayanga
相关产品推荐
相关产品推荐

