Eclipse导出Jar无法运行:no main manifest attribute问题求分步解决方案
解决Eclipse导出Jar文件“no main manifest attribute”无法运行的问题
兄弟我懂你!刚学Java的时候导出Jar踩过一模一样的坑,这个错误说白了就是你的Jar包不知道该从哪个类的main方法启动——就像你给了别人一堆文件,却没说从哪一页开始看。咱一步一步来搞定,保证新手也能看懂~
情况一:还没导出Jar,按正确流程直接导出(最省心)
这是最简单的方法,直接让Eclipse帮你搞定manifest配置:
- 先确认你的
test2.java类里有标准的main方法,格式必须是这样的(少一个关键字都不行):public class test2 { public static void main(String[] args) { // 你的代码逻辑,比如打印测试 System.out.println("终于能运行了!"); } } - 右键你的Eclipse项目,选择「Export...」(导出)
- 在弹出的窗口里,展开「Java」文件夹,选「Runnable JAR file」(划重点!是可运行Jar,不是普通的Jar),然后点「Next」
- 这一步是核心:在「Launch configuration」下拉菜单里,选择你之前运行过
test2类的那个配置——就是你平时点绿色运行按钮时用的那个。如果这里找不到,说明你之前没运行过这个类,先回到Eclipse右键test2.java,选「Run As」→「Java Application」跑一次,再回来就有了 - 在「Export destination」里选Jar的保存位置(比如桌面),文件名随便取(比如
test2.jar) - 下面的「Library handling」选第一个「Extract required libraries into generated JAR」就行,新手不用纠结其他选项,这个能把所有依赖的类都打包进去,避免找不到依赖的问题
- 最后点「Finish」,导出完成后,不管是双击Jar文件,还是在命令行里输入
java -jar test2.jar,都能正常启动了!
情况二:已经导出了有问题的Jar,手动修复
如果已经导出了Jar才发现问题,不用重新导出,手动改一下manifest就行:
- 把你的Jar文件后缀改成
.zip(比如test2.jar改成test2.zip),然后解压这个压缩包 - 找到解压后的
META-INF文件夹,里面有个MANIFEST.MF文件,用记事本打开它 - 你会看到类似这样的内容:
Manifest-Version: 1.0 Created-By: 1.8.0_291 (Oracle Corporation) - 在里面加一行
Main-Class: test2,注意:- 冒号后面必须有一个空格
- 如果你的类在包里面(比如包名叫
com.myproject),要写完整路径:Main-Class: com.myproject.test2 - 文件最后必须留一个空行(不然Jar识别不了这个配置)
- 修改后的文件应该是这样的:
Manifest-Version: 1.0 Created-By: 1.8.0_291 (Oracle Corporation) Main-Class: test2 - 把修改好的
MANIFEST.MF放回META-INF文件夹,然后把整个解压后的文件夹重新打包成zip,再把后缀改回.jar - 现在再运行
java -jar test2.jar或者双击Jar,就能正常启动了!
新手容易踩的几个坑
- 类名要注意大小写!Java是大小写敏感的,你的类是
test2还是Test2?Main-Class里的名字必须和类名完全一致 - 如果类在包中,一定要写完整的包名+类名,不能只写类名
- 千万别选普通的「JAR file」导出,普通Jar不会自动帮你配置
Main-Class属性,肯定会出这个错误
内容的提问来源于stack exchange,提问作者Pav
相关产品推荐
相关产品推荐

