2012-03-08 186 views
21

我有一个java项目,在Eclipse中运行它时工作得很好。当我尝试将其导出到一个"JAR file""Runnable JAR file"创建.jar文件,但是当我双击它来尝试运行它给了我一个错误,指出该方案运行Eclipse导出的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文件,包括包含主要方法的类。我使用的一些图像和文本文件也出现在jar文件中。

实际的程序不是太复杂 - 它是一个简单的使用Swing的“蛇”游戏(加上从Eclipse内部运行时的所有代码)。

任何想法是什么导致这个错误,我该如何解决它?让我知道我是否应该提供任何其他信息。

+0

主类的完全限定名称是什么?它是'package.MainClassName'还是别的? – 2012-03-08 04:50:25

+0

它是snake.Controller。 – scaevity 2012-03-08 04:52:51

+0

['Manifesto'](http://sites.google.com/site/drjohnbmatthews/manifesto)是检查您的清单的便捷方式。 – trashgod 2012-03-08 05:27:45

回答

6

好吧,所以我终于找到了它的工作。如果我使用JRE 6而不是7,那么一切都很好。不知道为什么,但它的作品。

+1

Ahha,有一个版本冲突,你的eclipse使用更高的版本,然后是类路径上的版本。它发生在大部分时间。 – 2012-03-08 06:43:49

+0

除了在eclipse中使用旧版本之外,还有什么方法可以修复它? – scaevity 2012-03-08 06:46:46

+0

而是在环境变量的Eclipse和Path变量中选择相同的版本。 – 2012-03-08 06:55:55

18

验证您可以启动应用程序那样:

java -cp myjarfile.jar snake.Controller 

我刚才读当我双击它 - 这听起来像您的操作系统配置问题。你在Windows资源管理器窗口中双击该文件?尝试从控制台/终端与命令

java -jar myjarfile.jar 

运行它进一步阅读


该清单与一个新行结束。请检查您的文件,缺少新线路会造成麻烦。

+0

抱歉,我忘了在上面提到它,但是清单是由Eclipse创建的,并且在最后包含一个空行(有时包括2)。 – scaevity 2012-03-08 06:04:34

5

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

考虑到你的目录结构如下:

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

现在假设我的主类是BeginGame里面包tictactoe,所以我将我的清单里面写。 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(TicTacToe文件夹,在我的情况下)内创建的.jar文件。

希望这会起作用。

1

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

转到项目的“属性 - >运行/调试设置”,并确保你的启动配置设置为项目的名称权主类中设置为(用于导出运行的JAR相同) name.space.of.your.project/YouMainClass

2

运行像这样的命令行:

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

有人能解释这个答案有什么问题吗?我不明白。这正是我用来运行一个jar文件,当我得到“无法找到主类错误” – MobileMon 2014-05-01 11:50:29

+0

谢谢它只是与我合作 – 2016-05-24 22:26:27

+0

这工作对我来说,忘记了“ - ”在“jar” – 2017-01-12 17:39:06

0

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

0

对于NetBeans用户是有这个问题是简单的:

1.Go到项目,并单击右键,选择属性

2.Click运行,还可以单击浏览器。

3.选择您想要首先出现的画面。

0

前几天我遇到了同样的问题,花了我好几天的时间才完成工作。 错误消息是“无法找到主类”,但我可以在其他Windows计算机上运行从Eclipse导出的可执行文件jar,而没有任何问题。

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

相关问题