【问题标题】:java.lang.UnsupportedClassVersionError: myApp : Unsupported major.minor version 51.0 (unable to load class myApp) On Linuxjava.lang.UnsupportedClassVersionError: myApp : Unsupported major.minor version 51.0 (unable to load class myApp) 在 Linux
【发布时间】:2025-11-26 02:50:01
【问题描述】:

最近我在 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

也为

which javac

输出是

/usr/bin/javac

其中 myApp 是在 Windows 中开发的 java 项目,并在 Linux 上的 Tomcats 的 webapp 目录中上传了 WAR 文件。

我不明白发生了什么?请问有人可以帮我解决这个问题吗?

提前致谢。

【问题讨论】:

    标签: java linux tomcat


    【解决方案1】:

    您需要 Java 7 运行时,而不是 Java 6。有关这方面的一些详细信息,请参阅 http://en.wikipedia.org/wiki/Java_class_file#General_layout

    或者,您需要查找和/或重新编译您的代码以与 Java 6 兼容。

    【讨论】:

    • 感谢 ziesemer 的快速回复。我应该如何为编译和运行环境制作相同的版本?
    • 我们需要更多详细信息来了解您想要做什么。假设“myApp”是您编写和编译的内容,请确保您使用 Java 6 JDK 而不是 Java 7 JDK -确保 Java 7 运行时在服务器上可用你期望运行这个。如果您想让事情变得非常简单,请使用相同的 JDK 来编译您希望运行它的代码。
    • 嗨 ziesemer,myApp 是在 windows 中开发的 java 项目,并在 Linux 上上传了 WAR 文件(请参阅我更新的问题)
    • @Deepu - 所以请确保您在 Windows 机器上针对 Java 6 JDK 而不是 Java 7 进行开发 - 或者在 Linux 服务器上安装和使用 Java 7 JDK。
    • 只是为了完成答案。通过设置-source-target 版本,您可以使用Java 7 编译器生成Java 6 兼容字节码。查看the javac documentation 了解更多信息。
    【解决方案2】:

    例外是因为您的代码是使用比您尝试运行它的版本更高的版本编译的。在您的 Windows 机器中,您可能正在使用 Windows 7 来构建战争。在您的 Windows 机器中检查 javac -version

    【讨论】:

    • Ya basiljames 是真的,现在我要在 Windows 上更改我的 Java。
    【解决方案3】:

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

    【讨论】:

    • 嗨彼得,我不太清楚。