Java &引用;找不到主类“;运行Eclipse导出的jar时出错
我有一个java项目,它在Eclipse中运行时运行得非常好。当我试图将其导出到Java &引用;找不到主类“;运行Eclipse导出的jar时出错,java,eclipse,swing,jar,executable-jar,Java,Eclipse,Swing,Jar,Executable Jar,我有一个java项目,它在Eclipse中运行时运行得非常好。当我试图将其导出到“JAR文件”或“Runnable JAR文件”时,会创建.JAR文件,但当我双击它以尝试运行程序时,会出现一个错误,即 "Could not find the main class: package.MainClassName. Program will exit." 正如我所提到的,我尝试导出到两个JAR选项,我指定了主方法所在的正确类,当我查看.JAR文件中的实际文件时,一切似乎都井然有序--清单如下所示:
“JAR文件”
或“Runnable JAR文件”
时,会创建.JAR文件,但当我双击它以尝试运行程序时,会出现一个错误,即
"Could not find the main class: package.MainClassName. Program will exit."
正如我所提到的,我尝试导出到两个JAR选项,我指定了主方法所在的正确类,当我查看.JAR
文件中的实际文件时,一切似乎都井然有序--清单如下所示:
Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)
并且位于META-INF
文件夹中。有一个名为“我的包”的文件夹,其中包含所有.class文件,包括包含main方法的类。我使用的一些图像和文本文件也出现在jar文件中
实际的程序并不复杂——它是一个使用Swing的简单“蛇”游戏(加上从Eclipse内部运行的代码)
你知道是什么导致了这个错误,以及我如何修复它吗?如果我还需要提供任何其他信息,请告诉我。验证您是否可以这样启动应用程序:
java -cp myjarfile.jar snake.Controller
当我双击它时,我才读到-这听起来像是操作系统的配置问题。您正在windows资源管理器窗口中双击该文件?尝试使用命令从控制台/终端运行它
java -jar myjarfile.jar
进一步阅读
清单必须以新行结尾。请检查您的文件,缺少新行将导致问题。您是否尝试手动创建.jar文件而不是使用Eclipse。尝试以下步骤,希望能有所帮助: 考虑到您的目录结构如下所示:
TicTacToe(Your Project Name I mean)
| | |
src bin manifest.txt
| |
icons tictactoe
现在假设我的主类是BeginGame
inpackagetictactoe
,那么我将在manifest.txt文件中编写以下内容:
Main-Class: tictactoe.BeginGame
请记住冒号:
和软件包名称之间的空格,即tictactoe
,并在开始命名后立即按Enter键并保存文件
现在,在您的命令提示下,转到bin文件夹的位置,我将对我的这一方进行如下描述:
C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
- 这里的第一个参数,即
。\tictactoe.jar
用于告诉您创建tictactoe.jar需要一个级别,即tictactoe文件夹中的
- 第二个参数
。\manifest.txt
表示manifest.txt文件位于上一层,即TicTacToe文件夹中
- 第三个和第四个参数
tictactoe
和icons
表示将这两个文件夹都添加到.jar
文件中,因为它们都放在bin
文件夹中,所以可以按原样使用。现在按回车键
现在试着运行在项目文件夹中创建的.jar文件(在我的例子中是TicTacToe文件夹)
希望这能起作用。好的,所以我终于让它起作用了。如果我使用JRE 6而不是7,一切都会很好。不知道为什么,但它是有效的。您是否重命名了项目/主类(例如通过重构)?如果是,您的启动配置可能设置不正确(例如,参考旧的主类或配置)。即使项目名称出现在“export runnable jar”对话框中,仔细检查可能会发现一个不匹配的主类名
转到项目的“属性->运行/调试设置”,确保您的启动配置(与导出runnable jar相同)设置为正确的项目名称,并且您的主类设置为name.space.of.your.project/YouMainClass
在命令行上这样运行它:
java -jar /path/to/your/jar/jarFile.jar
右键单击项目。转到属性。单击运行/调试设置。现在删除您尝试运行的主类的运行配置。
现在,当您再次点击run时,一切正常。对于netbeans用户来说,出现此问题的原因很简单:
1.转到项目,右键单击并选择属性
2.单击“运行”,再单击“浏览器”
3.选择要首先显示的帧。前几天我遇到了相同的问题,我花了好几天才完成。
错误消息是“找不到主类”,但我可以在其他Windows机器上运行从Eclipse导出的可执行jar,没有任何问题
解决方案是安装同一版本JRE的x64和x86版本。path环境变量已指向x64版本。不知道为什么,但它对我有效。主类的完全限定名是什么?是package.MainClassName
还是别的什么?是一种方便的方式来检查你的清单。@trashgood清单到底做了什么,而仅仅看清单却做不到?@scae:只是方便;它显示的是JAR中实际显示的清单,而不必提取内容。抱歉,可能是重复的,我忘了在上面提到它,但清单是由Eclipse创建的,并在末尾包含一个空行(有时包含2)。啊哈,有版本冲突,您的Eclipse使用的是更高版本,然后是类路径上的一个。大多数情况下都会发生这种情况。除了在eclipse中使用较旧的版本之外,还有什么方法可以修复它?请在eclipse和环境变量中的Path变量上选择相同的版本。在eclipse中,转到项目的运行配置并选择“主类”(浏览并选择)。然后生成jar文件。这应该可以解决任何问题。有人能解释一下这个答案的错误吗?我不明白。这正是我在遇到“找不到主类错误”时运行jar文件的方法。这对我来说很有效,忘记了“jar”前面的“-”