java.lang.UnsupportedClassVersionError: myApp : 不支持的 major.minor 版本 51.0(无法加载类 myApp)在 Linux 上。

8
最近我在Linux Centos上遇到了Apache Tomcat 6.0.35的问题。我遇到了以下错误 -
java.lang.UnsupportedClassVersionError: myApp : Unsupported major.minor version 51.0 (unable to load class myApp)

当我下达命令时 -
java -version

它显示

java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.9) (rhel-1.28.1.10.9.el5_8-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)

类似地,当我下达命令时 -
javac -version

它显示 -
javac 1.6.0_22

为了找到Java,我输入以下命令 -

whereis java

输出结果为 -
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java /usr/share/man/man1/java.1.gz

而对于

which java

它显示 -
/usr/bin/java

Also for

which javac

输出结果为:

/usr/bin/javac

当我把在Windows上开发的Java项目myApp,上传到Linux的Tomcat的webapp目录下后,出现了问题。

我不知道发生了什么事情?请有经验的人帮忙解决一下这个问题好吗?

先谢谢了。

3个回答

6

感谢ziesemer的快速回复。我应该如何使编译和运行环境版本相同? - Deepu
我们需要更多的细节来确定您要做什么。假设“myApp”是您编写和编译的内容,请确保您使用的是Java 6 JDK而不是Java 7 JDK - 或者确保在您期望运行此内容的服务器上可用Java 7运行时。如果您想保持简单,使用相同的JDK编译代码并运行它。 - ziesemer
嗨ziesemer,myApp是一个在Windows上开发的Java项目,并将WAR文件上传到Linux(请参见我的更新问题)。 - Deepu
@Deepu - 确保你在Windows机器上使用Java 6 JDK进行开发,而不是Java 7 - 或者在Linux服务器上安装和使用Java 7 JDK。 - ziesemer
只是为了完整回答。您可以通过设置“-source”和“-target”版本,使用Java 7编译器生成与Java 6兼容的字节码。有关更多信息,请参阅javac文档 - Anthony Accioly

3

出现异常是因为你的代码使用的编译版本高于你尝试运行它的版本。在你的Windows机器上,你可能使用了Windows7来构建war包。请检查javac -version命令在你的Windows机器上的输出。


嗨,basiljames,没错,我现在要在Windows上更改我的Java。 - Deepu

1

看起来你的代码是用jdk7编译的?


嗨,彼得,我不确定。 - Deepu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接