修复 Java 错误 java.lang.UnsupportedClassVersionError
本篇文章介绍了 Java 中的 Exception in thread main java.lang.UnsupportedClassVersionError 错误。
java.lang.UnsupportedClassVersionError的原因
UnsupportedClassVersionError 是 ClassFormatError 异常的子类,当 JVM 尝试读取类并发现类文件格式错误或文件无法解释为类时,会抛出该异常。 以下是 UnsupportedClassVersionError 异常的层次结构:
Java.Lang.Object
Java.Lang.Throwable
Java.Lang.Error
Java.Lang.LinkageError
Java.Lang.ClassFormatError
Java.Lang.UnsupportedClassVersionError
UnsupportedClassVersionError 异常专门用于检测以前由较低版本的 Java 运行而现在由较新版本运行的类文件。
例如,假设一个 Java 文件由 JDK 12 运行,现在由较新的 JRE 8 运行。在这种情况下,它将抛出 UnsupportedClassVersionError 异常,或者如果我们使用 Java 版本 1.8 编译该类并使用 Java 1.7 编译它,它将抛出 UnsupportedClassVersionError 异常。 抛出同样的错误。
让我们尝试一个由较新版本的 Java 编译然后由旧版本运行的类中的示例。 参见示例:
public class Unsupported_Class_Version_Error{
public static void main(String args[]) {
System.out.println("Hello this is Delftstack.com");
}
}
上面的代码将抛出 UnsupportedClassVersionError ,如下所示:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported_Class_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 上执行的。 这就是为什么会抛出线程“main”java.lang.UnsupportedClassVersionError: Unsupported_Class_Version_Error : Unsupported Major.minor version 52.0 中的异常。
修复 java.lang.UnsupportedClassVersionError
出现这个错误有两个条件,所以解决办法就在于这两个条件:
- 使用最新的 JDK 和 JRE 运行代码。
- 使用旧版本的 JDK 编译代码以匹配运行时 JDK。
- 一种简单的解决方案是使用 Java 交叉编译。 如果生产环境的JDK低于构建环境,我们可以通过交叉编译生成较低版本的class文件。
以下命令将用于为上面的代码创建一个类文件:
javac -target 1.7 Unsupported_Class_Version_Error.java
如上所述,解决方案是在编译时和运行时使用相同版本构建应用程序,或者至少编译时版本低于运行时版本。
上面的错误显示了主要次要版本问题。 Major Minor版本是JRE的版本; 例如,对于 JRE 8,主要版本是 52.0。
我们必须确保在编译和执行Java Class文件时不会出现Major Minor版本问题。 与该类兼容的 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
相关文章
解决 Java.Lang.RuntimeException: Unable to Instantiate Activity ComponentInfo
发布时间:2023/07/12 浏览次数:191 分类:Java
-
我们将探讨导致 java.lang.RuntimeException: Unable to instantiate Activity ComponentInfo 的不同可能原因。 最后,我们将有一个解决方案来根除它。解决 java.lang.RuntimeException: Unable to instantiate Activity ComponentIn
解决 Java 中 Generic Array Creation 错误
发布时间:2023/07/12 浏览次数:189 分类:Java
-
本篇文章通过代码示例说明了 generic array creation 错误,并重点介绍了创建通用数组时出现此错误的原因。 本次讨论将得出解决方案,我们将学习如何使用对象数组和反射功能创建通用数组。
Java.Net.UnknownHostException 异常
发布时间:2023/07/12 浏览次数:190 分类:Java
-
本篇文章介绍了 Java 中的 java.net.UnknownHostException 错误。Java中java.net.UnknownHostException的原因 java.net.UnknownHostException 表示找不到主机名的 IP 地址。
Java 中异常 java.lang.ClassCastException
发布时间:2023/07/12 浏览次数:72 分类:Java
-
当我们尝试将对象从父类转换为子类的对象时,会引发 java.lang.ClassCastException。 但是,如果我们尝试在两个完全不相关的类型之间转换对象,也可能会抛出该错误。本文将帮助您处理 Java 的 j
Java StackOverflowError 错误
发布时间:2023/07/12 浏览次数:190 分类:Java
-
本文解决了 Java 程序的 main() 方法中出现 java.lang.StackOverflowError 错误的可能原因。Java 中的 java.lang.StackOverflowError Java 中抛出 java.lang.StackOverflowError 表示应用程序的堆栈由于特别深的递归而已耗尽
修复 Java Unexpected Type 错误
发布时间:2023/07/12 浏览次数:132 分类:Java
-
本篇文章介绍了 Java 中的 Unexpected Type 错误。修复Java unexpected type 错误 当我们尝试将值分配给值或表达式而不是变量时,就会发生 Java 意外类型错误。
修复 错误 Javax.Net.SSL.SSLHandshakeException
发布时间:2023/07/12 浏览次数:66 分类:Java
-
本篇文章介绍了 Java 中的 javax.net.ssl.SSLHandshakeException 错误。Java 中的 SSL 握手 SSL 握手用于客户端和服务器建立安全连接所需的信任和后勤保障。
修复 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 错误 Could Not Reserve Enough Space for Object Heap Minecraft
发布时间:2023/07/11 浏览次数:125 分类:Java
-
本篇文章介绍了 Java 中的 Could not reserve enough space for object heap 错误。Minecraft 是一款非常流行的用 Java 开发的游戏,我们需要 Java 来运行它。Java 中Minecraft 错误Could not reserve enough space for object h