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 中错误 Error: Else Without if
发布时间:2023/07/13 浏览次数:183 分类:Java
-
本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'
Java 错误 Javac Is Not Recognized as an Internal or External Command, Operable
发布时间:2023/07/13 浏览次数:108 分类:Java
-
本文介绍了 Java 的 'javac' is not recognized as an internal or external command, operable program or batch file 的可能原因以及该错误的可能解决方案。 首先,我们来看看 javac 是什么。Java 中的 Javac
Java 错误 Java.Net.SocketTimeoutException: Connection Timed Out
发布时间:2023/07/13 浏览次数:161 分类:Java
-
在本篇文章中,我们将讨论 java.net.SocketTimeoutException: Connection timed out。 但首先,让我们仔细看看套接字和超时的概念。Java 中的套接字 两个计算机应用程序之间的逻辑链接可能有多个端点,其
Java 错误 Char Cannot Be Dereferenced
发布时间:2023/07/13 浏览次数:87 分类:Java
-
本篇文章介绍如何解决Java的 java char cannot be dereferenced 错误。Java Char cannot be dereferenced 当我们尝试使用 equals() 方法检查一个字符是否与另一个字符相等时,会出现错误 java char can not be dereferenc
解决 Java 中 Generic Array Creation 错误
发布时间:2023/07/12 浏览次数:189 分类:Java
-
本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。
修复 Java 错误 java.lang.UnsupportedClassVersionError
发布时间:2023/07/12 浏览次数:134 分类:Java
-
本篇文章介绍了 Java 中的 Exception in thread main java.lang.UnsupportedClassVersionError 错误。java.lang.UnsupportedClassVersionError的原因 UnsupportedClassVersionError 是 ClassFormatError 异常的子类,当 JVM 尝试读取类并发现
修复 Class X Is Public Should BeDeclared in a File Named X.java 错误
发布时间:2023/07/12 浏览次数:192 分类:Java
-
我们将经历各个阶段,从演示一个编译时错误开始,该错误指出类 X 是公共的,应该在名为 X.java 的文件中声明。 class X is public, should be declared in a file named X.java 的原因 然后,我们将看到导致此
Java 错误 Invalid LOC Header (Bad Signature)
发布时间:2023/07/12 浏览次数:192 分类:Java
-
本篇文章介绍了 Java 的无效 LOC 标头(错误签名)错误。Java 中无效的 LOC 标头(错误签名) 每当本地 Maven 存储库中的 jar 文件损坏时,就会出现无效 LOC 标头(错误签名)错误。
修复在 Java 中无法在系统上找到 JVM 定义 EXE4J_JAVA_HOME 错误
发布时间:2023/07/12 浏览次数:144 分类:Java
-
本篇文章讨论了为什么在您的系统上找不到 JVM 定义 EXE4J_JAVA_HOME 错误。 然后,它还提供了修复此错误的可能解决方案。Java中EXE4J_JAVA_HOME错误描述、可能原因和解决方案