迹忆客 专注技术分享

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

Java 中错误 Unsupported Major Minor Version

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

出现 Unsupported Major.minor version 错误或 Java.lang.UnsupportedClassVersionError 的原因是运行时 JDK 较低,编译时 JDK 较高。 本篇文章介绍如何解决Java中不支持的major.minor版本。


Java中 Unsupported major.minor version 错误

编译时和运行时的JDK应该是相同的,或者至少编译时的JDK不应该高于运行时的JDK; 否则,它将抛出 Java.lang.UnsupportedClassVersionErrorUnsupported 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

请按照以下提示解决“不支持的主要版本.次要版本”错误。

  1. 我们可以将生产环境上的JRE版本升级到最新版本。 或者至少类似于构建环境。
  2. 如果无法升级JRE,我们可以将构建环境中的JDK降级以匹配生产环境中的版本,或者降低生产环境中的版本。
  3. 一种简单的解决方案是使用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 项目属性

  • 转到 Java 构建路径,然后转到库。

    Java 构建路径

  • 删除以前的JRE系统库。 选择 JRE 系统库并单击删除。
  • 下一步是添加 JRE 系统库。 单击添加库。

    添加库

  • 选择 JRE 系统库并单击下一步。

    JRE系统库

  • 选择备用 JRE 选项并选择最新的 JRE。 单击“完成”。

遵循此过程,我们的生产环境 JRE 将类似于或高于构建环境,并且 Unsupported Major.minor version 错误将得到解决。

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

本文地址:

相关文章

修复 Java 中错误 Error: Else Without if

发布时间:2023/07/13 浏览次数:183 分类:Java

本篇文章我们将了解在用 Java 编写代码时只说 'else' without 'if' 的错误。 我们还将找出导致此错误的可能原因并找到解决方案。Java 中 error: 'else' without 'if'

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 标头(错误签名)错误。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便