Java 中错误 Unsupported Major Minor Version
出现 Unsupported Major.minor version
错误或 Java.lang.UnsupportedClassVersionError
的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。
Java中 Unsupported major.minor version 错误
编译时和运行时的JDK应该是相同的,或者至少编译时的JDK不应该高于运行时的JDK; 否则,它将抛出 Java.lang.UnsupportedClassVersionError
或 Unsupported Major.minor version
错误。
让我们尝试一个会抛出此错误的示例,因为我们使用 Java 1.8 来编译它,并使用 1.7 来执行它。 参见示例:
public class Unsupported_Version_Error{
public static void main(String args[]) {
System.out.println("Hello this is Delftstack.com");
}
}
上面的代码会抛出不支持版本的异常,如下所示。
Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported_Version_Error : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
输出显示错误,因为代码是在 Java 1.8 上编译并在 Java 1.7 上执行的。 由于主要版本 52 表示 Java SE 8,因此将抛出错误 Unsupported Major.minor version 52.0。
解决方案是在编译时和运行时使用相同的版本构建应用程序,或者至少编译时版本低于运行时版本。 与该类兼容的 JRE 版本列表如下。
Java SE 17 = 61,
Java SE 16 = 60,
Java SE 15 = 59,
Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
请按照以下提示解决“不支持的主要版本.次要版本”错误。
- 我们可以将生产环境上的JRE版本升级到最新版本。 或者至少类似于构建环境。
- 如果无法升级JRE,我们可以将构建环境中的JDK降级以匹配生产环境中的版本,或者降低生产环境中的版本。
-
一种简单的解决方案是使用Java交叉编译。 如果生产环境JDK低于构建环境,我们可以通过交叉编译生成较低版本的class文件。
以下命令将用于为上面的代码创建一个类文件。
javac -target 1.7 Unsupported_Version_Error.java
上面的命令将生成类文件 Unsupported_Version_Error.java
,该文件将兼容1.7版本的JDK,以便我们可以在构建环境中运行它。
Eclipse 项目中出现 Unsupported Major.minor version 错误
如果您使用的是Eclipse等IDE,那么我们需要在IDE中更改当前项目的Java版本。 按照以下步骤更改 Eclipse 中的 Java 版本,这将解决 Unsupported Major.minor version 错误。
-
在 Eclipse 中右键单击项目名称并转到“属性”。
-
转到 Java 构建路径,然后转到库。
- 删除以前的JRE系统库。 选择 JRE 系统库并单击删除。
-
下一步是添加 JRE 系统库。 单击添加库。
-
选择 JRE 系统库并单击下一步。
- 选择备用 JRE 选项并选择最新的 JRE。 单击“完成”。
遵循此过程,我们的生产环境 JRE 将类似于或高于构建环境,并且 Unsupported Major.minor version 错误将得到解决。
相关文章
Java 错误 Java.Net.SocketException: Network Is Unreachable
发布时间:2023/07/16 浏览次数:963 分类:Java
-
今天我们就来讨论一下Java编程时出现java.net.SocketException: Network is unreachable异常的可能原因及解决方法。Java中出现java.net.SocketException: Network is unreachable的可能原因及解决方案
Java 错误 Java.Net.ConnectException: Connection Timed Out
发布时间:2023/07/16 浏览次数:235 分类:Java
-
本篇文章将重点介绍如何使用此包进行基本的网络调用以及可能面临和解决的错误。在 Java 中使用 java.net 进行网络调用 进行网络调用是 Java 开发人员每天面临的最重要的事情之一。
Java 中错误 Attempt to Invoke Virtual Method on a Null Object Reference
发布时间:2023/07/16 浏览次数:948 分类:Java
-
本篇文章介绍如何解决 Java 中的 Attempt to invoke virtual method on a null object reference 错误。Java 中 Attempt to invoke virtual method on a null object reference 错误
Java 错误 Java.Security.InvalidKeyException: Illegal Key Size
发布时间:2023/07/15 浏览次数:644 分类:Java
-
本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。
Java 错误 Java.SQL.SQLException: Access Denied for User Root@Localhost
发布时间:2023/07/15 浏览次数:165 分类:Java
-
本篇文章介绍如何解决 Java 中的 java.sql.SQLException: Access Denied for user 'root'@'localhost' 错误。修复 Java 中的 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
Java 错误 Gateway Process Exited Before Sending Its Port Number
发布时间:2023/07/15 浏览次数:885 分类:Java
-
本篇文章介绍了 Java 中 Java gateway process exited before sending the driver its port number 错误 Java gateway process exited before sending the driver its port number 错误
修复 Java 中 Java.Net.BindException: Address Already in Use: Bind 错误
发布时间:2023/07/15 浏览次数:250 分类:Java
-
本篇文章介绍了 Java 中的 java.net.BindException:Address already in use: Bind 错误。修复Java 中的 java.net.BindException:Address already in use: Bind
Java 错误 Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8
发布时间:2023/07/14 浏览次数:274 分类:Java
-
在使用IntelliJ for Java时,无法编译Java程序是一个常见的问题。 本教程提供了此错误的解决方案。Error:Java: Javactask: Source Release 1.8 Requires Target Release 1.8 错误
Java 中 Could Not Find Java SE Runtime Environment 错误
发布时间:2023/07/14 浏览次数:868 分类:Java
-
当安装了运行时环境时,即 Java 找不到主 java.dll 文件时,可能会出现“Could not find Java SE Runtime Environment”错误。 本篇文章介绍如何解决 Java 中的“Could not find Java SE Runtime Environment”错误。