1

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

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.

此示例的源代码可在此处找到。我错过了什么?

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

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

4

2 回答 2

2

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

java -version

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

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

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

于 2013-07-02T14:58:21.943 回答
0

从运行此命令:

java -jar NumberAddition.jar

输出结束于:

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

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

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

java -cp NumberAddition.jar my.numberaddition.MainClass

于 2013-07-02T15:51:41.270 回答