迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 错误 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 错误 Java.Security.InvalidKeyException: Illegal Key Size

发布时间:2023/07/15 浏览次数:644 分类:Java

本篇文章介绍包含 java.security.InvalidKeyException: Illegal key size 的 Java 代码。 然后,我们将了解其可能的原因。最后,它通过消除指定的错误来引导我们找到解决方案。

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”错误。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便