jar中没有主清单属性或Invalid or corrupt jarfile解决方案

这是之前用命令行运行jar文件时候遇到的一个小问题,相信有很多新手会遇到,今天有空就把它记录下来。

这里写图片描述

这里写图片描述

  • 遇到这个问题,是因为你的jar包没有设置主类的入口。
    我们可以用winrar打开你导出jar包(不用解压),在META-INF文件夹中找到MANIFEST.MF文件,用记事本打开,加入Main-Class: 包名.主类名(冒号为半角符号,而且与包名之间有一个空格,而且必须加上回车)

    例如:这里写图片描述
    可以看到我这里冒号后面有空格,最后还加上了回车

  • 如果你按着上面步骤做,出现了找不到或无法加载主类,如下图
    这里写图片描述
    这里,是因为我在Main-Class: 后面只写了类名,没有写包名而出现的,大家也很有可能是这样或者是你可以检测你的包名和类名是否拼错
当执行"java -jar xxx.jar"时出现"Invalid or corrupt jarfile"的错误提示,这可能是由于MANIFEST.MF文件格式问题导致的。MANIFEST.MF是一个非常脆弱的文件,格式要求比较严格。其中的内容以key-value键值对的形式出现,key和value之间需要用"英文冒号 空格"进行分隔,并且冒号后的空格必须有。而且文件开头不能有空行,必须以Manifest-Version属性开头,文件必须以一个空行结束,该空行不能有任何字符,包括空格。另外,每行最长72个字符,超过的话需要采用续行,换行继续必须以空格开头。如果MANIFEST.MF文件违反了这些规则,就可能导致jar包被认为是无效损坏的。 另外,还有一个可能导致"Invalid or corrupt jarfile"错误的原因是文件路径中存在空格特殊字符。如果文件路径中包含空格特殊字符,需要将路径用引号括起来,以避免错误发生。 总结一下,当出现"Invalid or corrupt jarfile"错误时,需要检查MANIFEST.MF文件的格式是否符合要求,并且确保文件路径没有空格特殊字符。如果MANIFEST.MF文件格式正确且文件路径没有问题,那么可能是jar包文件本身损坏导致的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Linux】jar报错处理 Exception in thread “main“ java.lang.No Error: Invalid or corrupt jarfile ...](https://blog.csdn.net/xysxlgq/article/details/122862948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [jar包运行报错:Invalid or corrupt jarfile](https://blog.csdn.net/Dancen/article/details/89206836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值