Java 生成的可运行jar:找不到主类

Java 生成的可运行jar:找不到主类,java,eclipse,Java,Eclipse,我一直使用Eclipse的Export->Runnable jar选项,它工作得很好,但今天,我创建的所有Runnable jar在运行时都会产生以下错误:(/strong>)(编辑:双击文件运行它们。) Java虚拟Machide启动器 找不到主类:(类)。程序将退出。 在过去的两个小时里,我什么都试过了,但还是不行 我仍然可以运行我在过去创建的jar,而不需要 问题 清单文件看起来与那些JAR中的完全相同 这项工作和所有的.class文件似乎都已就绪 我试着用将所需库打包到生成的jar中,

我一直使用Eclipse的Export->Runnable jar选项,它工作得很好,但今天,我创建的所有Runnable jar在运行时都会产生以下错误:(/strong>)(编辑:双击文件运行它们。)

Java虚拟Machide启动器

找不到主类:(类)。程序将退出。

在过去的两个小时里,我什么都试过了,但还是不行

  • 我仍然可以运行我在过去创建的jar,而不需要 问题
  • 清单文件看起来与那些JAR中的完全相同 这项工作和所有的
    .class
    文件似乎都已就绪
  • 我试着用
    将所需库打包到生成的jar中,但该文件仍然无法工作但不会显示错误-双击文件不会产生任何效果。
Edit:通过
cmd
运行jar文件非常有效,但只需双击它就会产生此错误。(布拉格博伊)

编辑2: jar中的清单文件的内容可以正常工作:(显然它们是相同的,只是为了避免混淆。)

清单版本:1.0
类路径:。
主类:defender.defender组件(+后面两条空行)

以及jar中无法工作的清单文件的内容:(直接打开文件时)

清单版本:1.0
类路径:。
主类:pixel.Entry(+后面有两行空行)


两个主类文件都被确认位于各自的位置。

导出jar文件时,必须指定哪个是主类。您可以在eclipse向导中执行此操作。要进入这个屏幕,您需要简单地导出为一个jar,而不是可运行的jar

要找出错误,还有一个选项,请尝试打开命令提示符(在windows中)或终端(在linux/mac中),并将命令java-jar指定给_jar.jar。这将显示正在发生的详细错误


由于您的jar在通过命令提示符启动时工作正常,因此罪魁祸首肯定是windows中打开.jar扩展名的默认程序。为了避免这种情况,您可能必须右键单击jar,然后尝试打开一个jar可执行文件,该文件与您在命令提示符下运行的java版本兼容。

最后,唯一可以解决这一问题的方法是从JRE 1.7切换到JRE 1.6。

我知道这有点像线程坏死,但我也有同样的问题。最终对我起作用的是在环境变量中修复我的%JAVA_HOME%路径。事实证明,它仍然指向1.6版本,这就是为什么自从我安装1.7以来,除了通过Eclipse运行之外,没有任何东西在运行。在Eclipse中,我修复了所有指向正确版本的引用。

您是否尝试显式指定主类?@Bragboy请解释。检查我的答案。如果这能解决问题,请告诉我。如果没有,我需要看一下生成的清单文件。你能发布manifest.MF的内容吗?还要检查哪个程序与操作系统中的.jar文件关联。您是否在运行良好的jar中使用了任何未使用的设置/库?@Tobold将它们编辑成问题。导出普通jar并不要求我指定主类,也无法手动找到此类选项。不过,通过控制台运行jar——效果非常好。是什么原因阻止我点击罐子就打开它?@acid:更新了答案。Checkout我刚刚意识到我以前的项目是JRE 1.6,而那些不起作用的项目是1.7。将新版本改为1.6确实解决了问题,但为什么会发生这种情况?为了以防万一,我更新了Java,但是没有用。@Acid:我建议你用这些新信息更新这个问题。好吧,你是唯一一个试图帮助我的人,我确实直接感谢你解决了我的问题,所以我给你一个公认的答案。谢谢我想这是最好的答案,因为我在我的工作站上用的是jre 1.7,现在用的是jre 1.6。。。。。。。谢谢:)