运行Eclipse导出的jar时“找不到主类”错误

时间:2012-03-08 04:32:14

标签: java eclipse swing jar executable-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内部运行时都有效)。

任何想法是什么导致此错误以及我如何解决它?如果我还有任何其他信息,请告诉我。

8 个答案:

答案 0 :(得分:21)

确认您可以像这样启动您的应用程序:

java -cp myjarfile.jar snake.Controller

当我双击时,我只是阅读了 - 这听起来像是操作系统的配置问题。您是否在Windows资源管理器窗口中双击该文件?尝试使用命令

从控制台/终端运行它
java -jar myjarfile.jar

进一步阅读


清单必须以新行结束。请检查您的文件,缺少新行将导致麻烦。

答案 1 :(得分:6)

好的,所以我终于开始工作了。如果我使用JRE 6而不是7,一切都很好。不知道为什么,但它确实有效。

答案 2 :(得分:5)

您是否尝试手动创建.jar文件而不是使用Eclipse。请尝试以下步骤,希望这可能有所帮助:

考虑到您的目录结构如下所示:

 TicTacToe(Your Project Name I mean)
 |              |                  |
src            bin             manifest.txt
             |    |
           icons  tictactoe

现在假设我的主类在包BeginGame内是tictactoe,所以我会在manifest.txt文件里写这个东西:

Main-Class: tictactoe.BeginGame

请记住冒号:和包名称之间的空格,即tictactoe,并在BeginGame之后立即按Enter并保存文件。

现在在命令提示符下转到bin文件夹的位置,我按如下方式描述我的一面:

C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
  • 这里第一个参数,即..\tictactoe.jar用于告诉创建tictactoe.jar一级,即TicTacToe Folder内。
  • 第二个参数..\manifest.txt表示manifest.txt文件位于一级,即TicTacToe Folder内。
  • 第三和第四个参数tictactoeicons表示将这两个文件夹添加到.jar文件中,因为它们放在bin文件夹中,因此它们被用作它是。现在按Enter键。

现在尝试运行在Project Folder内创建的.jar文件(在我的例子中是TicTacToe文件夹)。

希望这会奏效。

答案 3 :(得分:5)

在命令行上运行它:

java -jar /path/to/your/jar/jarFile.jar

答案 4 :(得分:1)

您是否重命名了项目/主要课程(例如通过重构)?如果是,您的启动配置可能设置不正确(例如,参考主类或配置)。即使项目名称出现在“export runnable jar”对话框中,仔细检查也可能会显示一个不匹配的主类名称。

转到项目的“属性 - >运行/调试设置”,确保将启动配置(用于导出可运行jar的设置)设置为项目的正确名称 AND 主类设置为name.space.of.your.project/YouMainClass

答案 5 :(得分:1)

前几天我遇到了同样的问题,我花了几天时间才开始工作。 错误消息是"无法找到主类",但我可以在其他Windows机器上运行从Eclipse导出的可执行jar,没有任何问题。

解决方案是安装相同版本的JRE的x64和x86版本。路径环境变量指向x64版本。不知道为什么,但它对我有用。

答案 6 :(得分:0)

右键单击该项目。转到属性。单击“运行/调试设置”。现在删除您尝试运行的主类的运行配置。 现在,当你再次跑步时,事情就会好起来的。

答案 7 :(得分:0)

对于有这个问题的netbeans用户来说简单:

1.转到您的项目并右键单击并选择属性

2.单击“运行”,然后单击“浏览器”。

3.选择您想要首次出现的帧。