【问题标题】:Generated Runnable jar: Could not find the main class生成的可运行 jar:找不到主类
【发布时间】:2012-01-27 14:26:49
【问题描述】:

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

Java Virtual Machide Launcher

Could not find the main class: (class). Program will exit.

过去两个小时我已经尝试了所有方法,但仍然无法正常工作。

  • 我仍然可以运行我过去创建的 jar,而无需 问题。
  • 清单文件看起来与那些 jar 中的完全相同 这项工作和所有.class 文件似乎都已到位......
  • 我尝试使用Package required libraries into generated jar 导出,但文件仍然无法正常工作。 虽然它没有显示错误 - 双击文件没有任何作用。

编辑:通过cmd 运行jar 文件可以完美运行,但只需双击它就会产生此错误。 (吹牛男

编辑 2: 来自有效 jar 的清单文件的内容:(显然它们是相同的,只是想避免混淆。)

清单版本:1.0
类路径:.
Main-Class:defender.DefenderComponent(+后面的两个空行)

以及来自不起作用的 jar 的清单文件的内容:(直接打开文件时)

清单版本:1.0
类路径:.
Main-Class:pixel.Entry(后加两个空行)

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

【问题讨论】:

  • 您是否尝试明确指定主类?
  • @Bragboy 请解释一下。
  • 检查我的答案。让我知道是否可以解决。如果没有,我需要查看生成的清单文件。
  • 能否请您发布 MANIFEST.MF 的内容?还要检查哪个程序与您的操作系统中的 .jar 文件相关联。您是否使用了未在正常工作的 jar 中使用的任何设置/库?
  • @Tobold 将它们编辑到问题中。

标签: java eclipse


【解决方案1】:

在导出 jar 文件时,指定哪个是主类很重要。您可以在 Eclipse 向导中执行此操作。要进入此屏幕,您只需将其导出为 jar,而不是 Runnable jar。

还有一个查找错误的选项,尝试打开命令提示符(在 Windows 中)或终端(在 linux/mac 中)并输入此命令 java -jar your_jar.jar 。这将显示正在发生的事情的详细错误。

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

【讨论】:

  • 导出普通 jar 不会要求我指定主类,我也无法手动找到这样的选项。然而,通过控制台运行 jar - 完美运行。是什么让我无法通过点击打开罐子......?
  • @Acidic:更新了答案。结帐
  • 我刚刚意识到我的旧项目是 JRE 1.6,而那些不工作的是 1.7。将新版本更改为 1.6 确实可以解决问题,但为什么会发生这种情况?我更新了我的 Java 以防万一,但它没有帮助。
  • @Acidic:我建议你用这个新信息更新问题。
  • 嗯,你是唯一一个试图提供帮助的人,我确实直接感谢你解决了我的问题,所以我给你接受的答案。谢谢!
【解决方案2】:

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

【讨论】:

  • 我想这是最好的答案,因为我在我的工作站上使用 jre 1.7 工作,现在切换到 jre 1.6 ......谢谢 :)
【解决方案3】:

我知道这有点像线程坏死,但我遇到了同样的问题。最终对我有用的是在环境变量中修复我的 %JAVA_HOME% 路径。原来它仍然指向 1.6 版本,这就是为什么自从我安装 1.7 以来什么都没有运行,除了通过 Eclipse 修复了所有引用以指向正确的版本。

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2020-07-28
    • 2016-09-29
    • 2014-06-14
    • 2019-02-21
    • 2017-07-23
    相关资源
    最近更新 更多