我使用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.6),而不是我最初编译该程序的版本(1.7)。
答案 0 :(得分:2)
在RedHat框中检查您的Java版本。
java -version
您看到的异常与尝试运行已使用更高版本的JDK编译的字节码的JVM有关。
在RedHat上更新Java版本,方法是从Oracle下载或使用yum获取适合您编译的JDK版本。
或者在RedHat上重建您的软件;)如果您的代码不依赖于更高版本的语言增强功能。
答案 1 :(得分:0)
从运行此命令:
java -jar NumberAddition.jar
输出结束于:
无法找到主要类:my.numberaddition.NumberAdditionUI。 程序将退出。
在使用java -jar执行jar时,需要在清单文件中提及主类,或者应该指定主类的完整路径将jar文件放在类路径中
例如:如果my.numberaddition.MainClass是你的主要类...... 以
运行java -cp NumberAddition.jar my.numberaddition.MainClass