迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

修复 Java 错误 java.lang.UnsupportedClassVersionError

作者:迹忆客 最近更新:2023/07/11 浏览次数:

本篇文章介绍了 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

出现这个错误有两个条件,所以解决办法就在于这两个条件:

  1. 使用最新的 JDK 和 JRE 运行代码。
  2. 使用旧版本的 JDK 编译代码以匹配运行时 JDK。
  3. 一种简单的解决方案是使用 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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

解决 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

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便