【问题标题】:Has been compiled by a more recent version of the Java Runtime (class file version 57.0)已由更新版本的 Java Runtime(类文件版本 57.0)编译
【发布时间】:2020-01-27 06:22:21
【问题描述】:

我使用 IntelliJ 遇到了这个问题。但是我的系统上新安装的所有东西都是最新版本。

...已由更新版本的 Java Runtime(类文件版本 57.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本

我已经设置好了:

PATH 为 C:\Program Files\Java\jdk-13 JAVA_HOME 为:C:\Program Files\Java\jdk-13 JRE_HOME 为:C:\Program Files\Java\jre1.8.0_221

我已经设置了路径,试图找到项目结构的变化

完整的错误信息:

H:\087-JAVA\HelloWorld\src>java com.codewithmosh.Main
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/codewithmosh/Main has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

【问题讨论】:

  • 运行C:\Program Files\Java\jdk-13\bin\java com.codewithmosh.Main时会发生什么?
  • 请看下面的答案。如果删除 highlighted path 然后重新启动有帮助,请随时 accept it
  • Eclipse 有同样的问题。我安装了 openJDK8(又名 java 1.8;还包括 JRE)。在 Eclipse 中,我选择了 JRE OpenJDK8 来使用,但没有意识到我必须单独设置编译器。在首选项 > Java > 编译器 > 编译器合规级别 -> 1.8

标签: java intellij-idea sdk


【解决方案1】:

在 Linux 上,尝试运行 SoapUI 时出现此错误。安装最新的 OpenJDK JRE 包解决了这个问题,例如使用 Ubuntu:sudo apt install openjdk-17-jre

我在搜索引擎上发现了这个问题,所以也许它会对其他人有所帮助。

【讨论】:

    【解决方案2】:

    对于 Intellij IDEA 2021.2.3

    将模块 SDK 更新为 openjdk-17 后,它对我有用。 openjdk 版本“1.8.0_272”

    文件>项目结构>模块(项目设置)>模块SDK(选择openjdk-17) 如果 openjdk-17 不存在,则从下拉列表中选择 Add SDK > Dwnload JDK 并添加 openjdk-17。

    【讨论】:

      【解决方案3】:

      对于 Eclipse IDE,

      请按照以下步骤-

      1. 右键单击“项目”->“属性”
      2. 点击“Java 编译器”
      3. 选中“启用项目特定设置”
      4. 更正“编译器编译级别”(附上参考图)
      5. 如果需要,请验证并更正项目的 java 构建路径。

      【讨论】:

      • 这个问题是针对intellij ide的
      【解决方案4】:

      最简单的解决方案是更改 IDE 中的 Java 版本。在 Intellij 中,转到 File --> Project Structure 并将 Project SDK 更改为 Java Runtime 支持的 SDK(在您的情况下,它是 52,对应于版本 8 或更低版本)。下表显示了 Java SE 版本和主要版本之间的映射:

      Java SE Major version
      1.0.2 45
      1.1 45
      1.2 46
      1.3 47
      1.4 48
      5.0 49
      6 50
      7 51
      8 52
      9 53
      10 54
      11 55
      12 56
      13 57
      14 58
      15 59
      16 60

      表格取自:https://docs.oracle.com/javase/specs/jvms/se16/html/jvms-4.html

      【讨论】:

        【解决方案5】:

        我如何在 Eclipse 中解决它

        1. 转到项目的属性

        2. 转到 Java 编译器

        3. 将编译器复杂级别更改为我的项目使用的 java(我的项目中的 java 11) 当最后一条消息消失时,您可以看到它是您的 java 工作

        4. 申请

        【讨论】:

          【解决方案6】:

          我最近将 IntelliJ 版本升级到 2020.3 时遇到了这个问题。我不得不禁用插件来解决这个问题。插件名称为Thrift Support

          禁用插件的步骤如下:

          1. 打开 IntelliJ 的首选项。您可以通过在 mac 中单击 Command + , 来完成此操作。
          2. 导航到plugins
          3. 在搜索窗口中搜索Thrift Support 插件。单击复选框图标以取消选择它。
          4. 点击应用图标。
          5. 请参阅此图片以供参考

          更多详情请参考此链接java.lang.UnsupportedClassVersionError 2020.3 version intellij。我在上面的链接中找到了这条对我有用的评论。

          赵斌评论于 2020 年 12 月 31 日 08:00 @Lejia Chen @Tobias Schulmann Workflow 我的 IDEA3.X 没有安装 Erlang 插件,我禁用了 Thrift Support 1.4.0 并且它工作。 IDEA 3.0 和 3.1 都有同样的问题。

          【讨论】:

            【解决方案7】:

            对我来说,删除 target 文件夹后它起作用了?

            【讨论】:

            • 或构建文件夹。
            【解决方案8】:

            问题是你用java 13(类文件57)编译代码,而java运行时设置为java 8(类文件52)。

            假设您的本地系统中有 JRE 13 installed,您可以将运行时从 52 更改为 57。 您可以使用插件 Choose Runtime 来做到这一点。要安装它,请转到 File/Settings/Plugins

            安装后转到帮助/查找操作,键入“runtime”并从下拉菜单中选择 jre 13。

            【讨论】:

            • 这导致 IntelliJ IDE 无法使用。
            【解决方案9】:

            这是 IntelliJ IDEA 中的设置($JAVA_HOME 和语言级别设置为 1.8):

            File > Settings > Build, Execution, Deployment > Gradle > Gradle JVM

            选择例如。 Project SDK (corretto-1.8)(或任何其他兼容版本)。

            然后删除build目录并重启IDE。

            【讨论】:

              【解决方案10】:

              我在安装 Oracle 的 JRE 时遇到了同样的问题,经过研究解决了这个问题。

              我移动了环境路径 C:\Program Files (x86)\Common Files\Oracle\Java\javapath下方H:\Program Files\Java\jdk-13.0.1\bin

              像这样:

              路径

              H:\Program Files\Java\jdk-13.0.1\bin
              C:\Program Files (x86)\Common Files\Oracle\Java\javapath

              路径

              %JAVA_HOME%
              %JRE_HOME%

              【讨论】:

                【解决方案11】:

                我在尝试运行一些 Groovy 脚本时遇到了与 IntelliJ 类似的问题。 这是我解决它的方法。

                转到“项目结构”->“项目”->“项目语言级别”并选择“SDK 默认”。这应该对所有项目模块使用相同的 SDK。

                【讨论】:

                  【解决方案12】:

                  我也遇到了类似的问题,被问到here。问题是某些应用程序带有自己的 JRE,有时安装的 JDK 在环境路径中的优先级较低。现在有两种选择:

                  1. 卸载其他拥有自己的 JDK/JRE 的应用程序。
                  2. 有时无法删除其他应用程序,这就是我的情况。所以我将我安装的 JDK 移到了环境路径中的更高优先级。

                  我还按照@CrazyCoder 的建议删除了路径

                  【讨论】:

                    【解决方案13】:

                    您需要仔细检查PATH 环境设置。 C:\Program Files\Java\jdk-13你目前有不正确的。请确保您在PATH 列表的顶部拥有最新 JDK 版本的 bin 子目录。

                    java.exe 可执行文件位于C:\Program Files\Java\jdk-13\bin 目录中,因此您需要在PATH 中拥有它。

                    使用this tool 快速验证或编辑Windows 上的环境变量。它允许重新排序PATH 条目。它还会以红色突出显示无效路径。

                    如果您还希望代码在较低的 JDK 版本上运行,请在 IDE 中更改目标字节码版本。相关截图见this answer

                    另请参阅this answer,了解 Java 类文件版本。发生的情况是,您使用 Java 13 和 13 语言级字节码(目标)构建代码,并尝试使用 Java 8 运行它,这是根据 PATH 变量配置的第一个(默认)Java 版本。

                    解决方案是将 Java 13 bin 目录放在上面的 PATH 中或代替 Java 8。在 Windows 上,您可能会将 C:\Program Files (x86)\Common Files\Oracle\Java\javapath 添加到 PATH 自动指向 Java 8:

                    如果是这种情况,请从PATH 中删除突出显示的部分,然后注销/登录或重新启动以使更改生效。您需要先以管理员身份重新启动才能编辑系统变量(请参阅系统变量列右上角的按钮)。

                    【讨论】:

                    • 这是一个很好的答案。在系统环境变量中将最新 java 版本的“路径”向上移动到任何其他版本之上可以解决问题。请务必在之后登录和注销,或重新启动
                    • 设置环境变量后不要忘记关闭并重新打开命令行。在我看来,命令行窗口会记住环境变量的上一个状态。 (这当然仅适用于您尝试从命令行运行它)
                    猜你喜欢
                    • 2019-10-07
                    • 2022-06-15
                    • 2021-01-07
                    • 2022-01-23
                    • 2020-12-26
                    • 2018-05-07
                    • 2022-11-27
                    • 2018-06-01
                    相关资源
                    最近更新 更多