运行Eclipse导出的jar时“找不到主类”错误
我有一个java项目,从Eclipse中运行它时可以正常工作。 当我尝试将其导出到"JAR file"
或"Runnable JAR file"
,会创建.jar文件,但是当我双击它以尝试运行该程序时,它会给我一个错误
"Could not find the main class: package.MainClassName. Program will exit."
正如我所提到的,我尝试导出到两个JAR选项,我指定了main方法所在的正确类,当我查看.jar
文件中的实际文件时,一切似乎都是有序的 – 清单看起来像:
Manifest-Version: 1.0 Main-Class: package.MainClassName (blank line)
并且位于META-INF
文件夹中。 我的包名有一个文件夹,其中包含所有.class文件,包括包含main方法的类。 我使用的一些图像和文本文件也出现在jar文件中。
实际的程序并不是太复杂 – 它是一个使用Swing的简单“蛇”游戏(加上代码在Eclipse内部运行时都有效)。
是什么原因造成了这个错误以及我如何解决它? 如果我应该提供任何其他信息,请告诉我。
validation您是否可以像这样启动您的应用程序:
java -cp myjarfile.jar snake.Controller
我只是在双击它时阅读 – 这听起来像是操作系统的配置问题。 您是否在Windows资源管理器窗口中双击该文件? 尝试使用该命令从控制台/终端运行它
java -jar myjarfile.jar
进一步阅读
- 在Windows上运行JAR文件
清单必须以新行结束。 请检查您的文件,丢失新行会造成麻烦。
好的,所以我终于开始工作了。 如果我使用JRE 6而不是7,一切都很好。 不知道为什么,但它的确有效。
您是否尝试手动创建.jar文件而不是使用Eclipse。 请尝试以下步骤,希望这可能会有所帮助:
考虑到您的目录结构如下所示:
TicTacToe(Your Project Name I mean) | | | src bin manifest.txt | | icons tictactoe
现在假设我的主类是BeginGame
内的tictactoe
,所以我会在manifest.txt文件里面写这个东西:
Main-Class: tictactoe.BeginGame
请记住冒号之间的空格:
和包名称即tictactoe
,并在BeginGame
之后BeginGame
按Enter并保存文件。
现在在你的命令提示符下转到bin文件夹的位置,我正在描述我的方面如下:
C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
- 这里第一个参数ie
..\tictactoe.jar
用于告诉创建tictactoe.jar一级,即在TicTacToe Folder
。 - 第二个参数
..\manifest.txt
意味着manifest.txt文件位于一个级别,即在TicTacToe Folder
。 - 第三和第四个参数
tictactoe
和icons
意味着,将这两个文件夹添加到.jar
文件中,因为它们放在bin
文件夹中,因此它们按原样使用。 现在按Enter键。
现在尝试运行在Project Folder
(TicTacToe文件夹,在我的情况下)中创建的.jar文件。
希望这会奏效。
在命令行上运行它:
java -jar /path/to/your/jar/jarFile.jar
您是否重命名了项目/主类(例如通过重构)? 如果是,则可能未正确设置启动配置 (例如,参考旧的主类或配置)。 即使项目名称出现在“export runnable jar”对话框中,仔细检查也可能会显示一个不匹配的主类名称。
转到项目的“属性 – >运行/调试设置”,确保将启动配置(用于导出runnable jar的设置)设置为正确的项目名称,并将主类设置为name.space.of.your.project/YouMainClass
。
右键单击该项目。 转到属性。 单击“运行/调试设置”。 现在删除您尝试运行的主类的运行配置。 现在,当你再次跑步时,事情会好起来的。
对于有这个问题的netbeans用户来说简单:
1.转到您的项目并右键单击并选择属性
2.单击“运行”,然后单击“浏览器
3.选择要首次显示的帧。
前几天我遇到了同样的问题,我花了几天时间才使它成功。 错误消息是“找不到主类”,但我可以在其他Windows机器上运行从Eclipse导出的可执行jar,没有任何问题。
解决方案是安装相同版本的JRE的x64和x86版本。 路径环境变量指向x64版本。 不知道为什么,但它对我有用。
- 部署程序集:当前显示的页面包含无效值
- ‘不支持的major.minor版本52.0’是什么意思,我该如何解决?
- 应用程序包Mac OS X Leopard
- java中的java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener
- 我如何找到Eclipse正在使用的JDK版本?
- java.lang.NoClassDefFoundError:如何修复此错误?
- maven依赖关系和手动添加WEB-INF / lib中的jar之间的区别
- 如何告诉Maven包含jar依赖项,而不是Eclipse中的子项目源目录?
- 使用Maven创建一个独立的应用程序