【问题标题】:Could not find the main class running jar找不到运行jar的主类
【发布时间】:2013-06-30 00:11:03
【问题描述】:

我使用 NetBeans 的教程在 java 中创建了一个程序,它在 Windows 中运行良好。但是,当我尝试在 Linux (RedHat) 中运行相同的 .jar 时,出现以下异常:

Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=my/numberaddition/NumberAdditionUI, offset=6

从运行这个命令开始:

java -jar NumberAddition.jar

输出结束于:

Could not find the main class: my.numberaddition.NumberAdditionUI. Program will exit.

这个例子的源代码可以在here找到。 我错过了什么?

编辑:为了操作系统之间的可移植性,我需要添加一些内容吗?

编辑,回答:感谢留下可能重复链接的评论者。从这些和一些进一步的研究中,我能够确定 Linux 环境中的 JRE 是比我最初编译程序的版本 (1.7) 更旧的版本 (1.6)。

【问题讨论】:

  • 你在 RedHat Linux 中使用 OpenJDK 吗?
  • @orzechowskid 我没有使用 WebSphere Application Server V7,这似乎是您链接问题的问题根源。会不会有什么联系?那里的答案也不清楚如何解决这个问题。
  • 我相信 Redhat 上的默认 JDK 是 OpenJDK,它可能会在 Websphere 实例中运行时出现问题。最好的解决方法是下载 IBM JDK 或 Oracle JDK 并使用它再次编译。

标签: java class classnotfoundexception


【解决方案1】:

在您的 RedHat 框中检查您的 Java 版本。

java -version

您看到的异常与 JVM 尝试运行已使用更高版本的 JDK 编译的字节码有关。

通过从 Oracle 下载 Java 版本或使用 yum 来更新 RedHat 上的 Java 版本,以获取适合您编译的 JDK 版本。

如果您的代码不依赖于更高版本的语言增强功能,或者在 RedHat 上重新构建您的软件。

【讨论】:

    【解决方案2】:

    从运行这个命令开始:

    java -jar NumberAddition.jar

    输出结束于:

    找不到主类:my.numberaddition.NumberAdditionUI。 程序将退出。

    使用 java -jar 执行 jar 时,需要在 manifest 文件中提及主类,或者应指定主类的完整路径,将 jar 文件放在类路径中

    例如:如果 my.numberaddition.MainClass 是您的主类... 运行方式

    java -cp NumberAddition.jar my.numberaddition.MainClass

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-28
      • 2012-01-27
      • 2019-02-21
      • 2016-05-21
      • 2018-08-23
      • 2016-01-18
      • 1970-01-01
      • 2012-11-05
      相关资源
      最近更新 更多