【问题标题】:"Could not find the main class" error“找不到主类”错误
【发布时间】:2012-04-15 18:57:34
【问题描述】:

我有一个 Eclipse 生成的 .jar,我无法在其他计算机上运行(使用 Windows XP)。出现“找不到主类。程序将退出”消息。那台计算机运行良好的另一个由 Netbeans 生成的 .jar,所以我猜这不是 JRE 的问题。我更新了 JRE,但没有任何改变。有什么问题?

更新:我忘了提到,我制作了一个可运行的 jar 文件。在另外两台计算机上它工作正常(win 7 和 XP),但在那台特定的计算机上却不行。

更新 2:它是一个 Swing 应用程序,因此 JAR 通过双击运行。

【问题讨论】:

  • 您是否正在尝试运行某个类的main 方法?
  • 是的。我有一个带有 main 方法的 JFrame。
  • 你是对的 - 我没有时间阅读与 stackoverflow 功能相关的所有内容,我认为单击“这个答案很有用”可以做到这一点。对未来的好建议:)
  • 请用您掌握的确切线索更新问题。您说您有一个 JAR,并且使用相同的 java 命令行在多台机器上运行相同的 JAR?请给我们启动程序的确切命令行。
  • 没有命令,我只是双击JAR。这是一个摇摆应用程序。

标签: java eclipse netbeans


【解决方案1】:

检查清单的内容。 Main-Class: foo.Bar 行必须对应于 jar 文件中的 /foo/Bar.class 条目,foo.Bar.java 必须包含适当的主方法。此外,Class-Path: 行中的所有 jar 引用也必须复制。

使用“jar tvf my.jar”查看布局。

【讨论】:

  • 但是即使类路径有问题,它怎么可能在其他计算机上运行良好?这是我的清单(非常简单的应用程序,在主包中尝试一个类) Manifest-Version: 1.0 Class-Path: 。主类:main.Try
  • 您还需要复制 Class-Path: 行中引用的所有 jar。
  • 但如您所见,ClassPath 中没有额外的 JAR(只有一个点)。应用非常简单——一个类继承自JFrame,一个JButton,无需额外代码。
  • 如果您引用了未包含在 jar 中的类,则一个点就足够了。尝试在 CMD.EXE 中运行“java -jar my.jar”并从不起作用的机器报告堆栈跟踪。
  • 我得到了“Unsupported major.minor version 51.0”异常。我安装了最新的 JDK,现在它可以工作了。非常感谢。
【解决方案2】:

您必须将 jar 放在类路径中,如下所示:

java -classpath "C:\somepath\myapp.jar" mypackage.MyClass

【讨论】:

  • 正如我所写,那台计算机运行 jars 没有问题,但由 Netbeans 生成,所以我猜这个问题与类路径无关。
  • @user1091733 但是类路径并不特定于计算机。它特定于 java 的每一次执行。也许问题不在类路径中,但如果您希望我们解决您的问题,我们不能相信您的话。
猜你喜欢
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2017-12-03
  • 2012-05-15
相关资源
最近更新 更多