运行 Eclipse 导出的 jar 时出现“找不到主类”错误
Posted
技术标签:
【中文标题】运行 Eclipse 导出的 jar 时出现“找不到主类”错误【英文标题】:"Could not find the main class" error when running jar exported by Eclipse 【发布时间】:2012-03-25 15:44:50 【问题描述】:我有一个在 Eclipse 中运行时运行良好的 java 项目。当我尝试将其导出到 "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 内部运行时所有代码都可以工作)。
任何想法是什么导致了这个错误以及我该如何解决它?让我知道我是否应该提供任何其他信息。
【问题讨论】:
主类的全名是什么?是package.MainClassName
还是别的什么?
Manifesto
是检查清单的便捷方式。
@trashgod Manifesto 究竟做了什么而仅仅看清单却没有?
@scae:只是方便;它会显示 JAR 中实际出现的清单,而无需提取内容。
"Could not find the main class" when double-clicking .jar file的可能重复
【参考方案1】:
验证您是否可以这样启动您的应用程序:
java -cp myjarfile.jar snake.Controller
当我双击它时,我刚刚阅读 - 这听起来像是您的操作系统的配置问题。您是在 Windows 资源管理器窗口中双击文件吗?尝试使用命令从控制台/终端运行它
java -jar myjarfile.jar
进一步阅读
Running JAR file on Windows清单必须以新行结束。请检查您的文件,缺少新行会导致麻烦。
【讨论】:
对不起,我忘了在上面提到它,但清单是由 Eclipse 创建的,并且在末尾包含一个空行(有时它包含 2 个)。【参考方案2】:好的,所以我终于让它工作了。如果我使用 JRE 6 而不是 7,一切都会很好。不知道为什么,但它确实有效。
【讨论】:
啊哈,存在版本冲突,您的 Eclipse 使用的是更高版本,然后是类路径上的版本。大部分时间都会发生这种情况。 除了在 eclipse 中使用旧版本之外还有什么方法可以修复它? 而是在环境变量中的 Eclipse 和路径变量上选择相同的版本。 在 Eclipse 中,转到项目的运行配置并选择“主类”(浏览并选择)。在此之后生成 jar 文件。这应该可以解决任何问题。【参考方案3】:在命令行上这样运行:
java -jar /path/to/your/jar/jarFile.jar
【讨论】:
有人能解释一下这个答案有什么问题吗?我不明白。当我收到“找不到主类错误”时,这正是我用来运行 jar 文件的方法 这对我有用,忘记了“jar”前面的“-”【参考方案4】:您是否尝试过手动创建 .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
内部。
第三和第四个参数tictactoe
和icons
表示将这两个文件夹添加到.jar
文件中,因为它们被放置在bin
文件夹中,因此它们可以按原样使用。现在按 Enter。
现在尝试运行在Project Folder
(在我的例子中是井字游戏文件夹)中创建的.jar 文件。
希望这会奏效。
【讨论】:
【参考方案5】:您是否重命名了您的项目/主类(例如通过重构)?如果是,您的 Launch Configuration 可能设置不正确(例如,引用 old 主类或配置)。即使项目名称出现在“export runnable jar”对话框中,仔细检查也可能会发现主类名称不匹配。
转到项目的“属性->运行/调试设置”并确保您的启动配置(用于导出可运行 jar 的相同)设置为项目的正确名称和您的主类设置为name.space.of.your.project/YouMainClass
。
【讨论】:
【参考方案6】:前几天我遇到了同样的问题,我花了好几天才让它工作。 错误信息是“找不到主类”,但我可以在其他 Windows 机器上运行从 Eclipse 导出的可执行 jar,没有任何问题。
解决方案是安装相同版本的 JRE 的 x64 和 x86 版本。路径环境变量指向 x64 版本。不知道为什么,但它对我有用。
【讨论】:
【参考方案7】:右键单击项目。转到属性。单击运行/调试设置。现在删除您尝试运行的主类的运行配置。 现在,当你再次点击运行时,一切都会好起来的。
【讨论】:
【参考方案8】:对于 netbeans 用户来说,遇到这个问题很简单:
1.转到您的项目并右键单击并选择属性
2.点击运行,同时点击浏览器。
3.选择你想首先出现的框架。
【讨论】:
以上是关于运行 Eclipse 导出的 jar 时出现“找不到主类”错误的主要内容,如果未能解决你的问题,请参考以下文章
当我在 Eclipse 中运行 hadoop 作业时出现异常
我用eclipse导出的runnable jar不能双击执行,但在命令行可以用java -jar ***.jar运行,这是怎么回事?
Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径