2011-12-25 130 views
4

我一直使用Eclipse的导出 - > Runnable jar选项,它工作得很完美,但是今天似乎我创建的所有Runnable jar都会产生以下错误我运行它们(编辑:双击运行这些文件。)生成的Runnable jar:找不到主类

Java Virtual Machide Launcher

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

我用尽了一切,在过去两个小时,但它仍然不工作。

  • 我仍然可以运行我以前创建的没有 问题的罐子。
  • 清单文件看起来完全一样的那些工作罐子 和所有.class文件似乎是在地方...
  • 我试着Package required libraries into generated jar出口,但文件仍然无法正常工作。 虽然没有显示错误 - 双击该文件什么都不做。

编辑:通过cmd工程运行jar文件完美,但简单地双击它产生这个错误。 (Bragboy

编辑2: 从工作的JAR清单文件的内容:(显然,它们是相同的,只是想避免混淆。)

清单,版本:1.0
类路径:。
主类:defender.DefenderComponent(+两个空行以后)

而从罐的清单文件不工作的内容:(当直接打开文件)

Manifest-Version:1.0
Class-Path:。
主类:pixel.Entry(+两个空行以后)

两个主类文件被确认为在它们各自的位置。

+0

您是否尝试明确指定主类? – bragboy 2011-12-25 11:39:36

+0

@Bragboy请解释一下。 – Acidic 2011-12-25 11:40:52

+0

检查我的答案。让我知道如果解决它。如果没有,我需要看看生成的清单文件。 – bragboy 2011-12-25 11:48:38

回答

2

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

+1

我想这是最好的答案,因为我在我的工作站与工作室1.7工作,现在切换与JRE 1.6 .......谢谢:) – 2012-06-14 11:50:47

3

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

enter image description here

还有一个选项,以找出错误,试图打开一个命令提示符(在Windows)或终端(在Linux/MAC)和给这个命令Java的罐子your_jar.jar。这将显示发生了什么的详细错误。

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

+0

导出正常的jar不会要求我指定主类,也不能手动找到这样的选项。然后通过控制台运行jar - 完美运行。有什么可以阻止我点击它打开罐子? – Acidic 2011-12-25 11:57:57

+0

@Acidic:更新了答案。结帐 – bragboy 2011-12-25 14:01:32

+0

我刚刚意识到我的旧项目是JRE 1.6,而那些不工作的项目是1.7。将新版本更改为1.6确实解决了这个问题,但为何会发生这种情况?为了以防万一,我更新了Java,但没有帮助。 – Acidic 2011-12-25 14:27:15

0

我知道这是一个necro线程,但我有同样的问题。终于为我工作的是修复我的%JAVA_HOME%路径在环境变量。原来它仍然指向1.6版本,这就是为什么自从我安装1.7版本以来没有任何东西运行,除了通过Eclipse,我已经修复了所有引用指向正确的版本。