Java &引用;找不到主类“;运行Eclipse导出的jar时出错

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文件中的实际文件时,一切似乎都井然有序--清单如下所示:

我有一个java项目,它在Eclipse中运行时运行得非常好。当我试图将其导出到
“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
inpackage
tictactoe
,那么我将在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”前面的“-”