1

编译了一个简单的 hello word 程序,但是当我运行它时,出现以下异常。

Exception in thread "main" java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    Could not find the main class:HelloWorldApp.Program will exit.

我有 java 版本 1.6.0_21

我的程序是:

class HelloWorldApp { 
   public static void main(String[] args) { 
   System.out.println("Hello World!"); // Display the string. 
   }
}
4

5 回答 5

5

您编译了.class一个版本并尝试在旧版本上运行它。

如何修复 java.lang.UnsupportedClassVersionError:不支持的 major.minor 版本

于 2013-10-21T17:24:29.840 回答
2

您为 Java JRE 的一个版本(例如版本 7)编译了 Java 代码,但是您针对旧版本的 JRE(例如版本 6)运行它。

要找出您当前设置的版本,您可以打开 shell 或命令提示符(在 Windows 中)并键入:

java -version

这将返回版本号。

===edit=== 添加更多详细信息以回复评论 Java 是来自 JRE 或 JDK 的二进制文件。那里有不同的 JRE/JDK 提供程序,主要的是 Oracle。

如果您在 Windows 上,您可以转到C:\Program Files\JavaC:\Program Files (x86)\Java(32 位),您会注意到您有 JRE 文件夹和 JDK 文件夹。JDK 总是包含一个 JRE。JRE 是运行 Java 程序所需的最低要求。通常,您始终拥有与 JDK 版本相同的 JRE 版本。为简单起见,请始终针对您的 JDK 进行开发和测试。确保你选择了正确的。

你怎么知道哪个在使用?这取决于您的环境变量。在 Windows 命令提示符中,您可以编写以下内容:

C:\Users\djob>set JA

那会回复

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04

在这种情况下,您知道正在使用哪个 JRE:JDK 1.7.0u04 附带的那个。顺便说一句,Java 7 是 Java 1.7(这是 Java 约定),就像 Java 6 实际上是 Java 1.6。

请注意,您的 IDE(例如 Eclipse)可能使用不同的 JRE 设置,因此也请检查那里。

高温高压

于 2013-10-21T17:26:16.913 回答
0

您使用 Java 6 JVM 运行在 Java 7 中编译的类

于 2013-10-21T17:24:57.037 回答
0

class使用较新版本的 Java 编译的文件版本。你需要重新编译你的源代码。如果您无法重新编译它或者您没有源代码,您可以随时升级到 Java SE 的新版本。请记住,当您安装 Java JDK 或 JRE 时,总会有jshed进程在运行,并且它总是建议您在 Java 版本发生变化时进行升级。你所需要的只是让它访问互联网,一旦连接,它就会像魔术一样完成它的工作。

于 2013-10-21T17:26:33.593 回答
0

编译的java版本和你在JAVA_HOME中设置的不一样

于 2017-04-17T04:11:45.733 回答