由 Java 运行时的最新版本(类文件57.0版)编译

我在使用 IntelliJ 时遇到了这个问题,但是我的系统上已经安装了最新版本的所有软件。

... 已经由 Java 运行时的最新版本(类文件版本57.0)编译,这个版本的 Java 运行时只能识别到52.0的类文件版本

我已经设置好了:

PATH as C:\Program Files\Java\jdk-13 JAVA _ HOME as: C: Program Files JAVA jdk-13 JRE_HOME as: 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)
384860 次浏览

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

java.exe可执行文件在 C:\Program Files\Java\jdk-13\bin目录中,所以这就是在 PATH中需要的。

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

If you want your code to run on lower JDK versions as well, change the target bytecode version in the IDE. See 这个答案 for the relevant screenshots.

另请参阅有关 Java 类文件版本的 这个答案。所发生的是,您使用 Java13和13语言级别的字节码(目标)构建代码,并尝试使用 Java8运行它,根据 PATH变量配置,Java8是第一个(默认) Java 版本。

解决方案是在 PATH或更高版本中使用 Java13bin目录,而不是 Java8。在 Windows 上,你可以将 C:\Program Files (x86)\Common Files\Oracle\Java\javapath自动添加到 PATH,现在指向 Java8:

javapath

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

enter image description here

我也遇到了类似的问题,这是要求 给你。问题在于,有些应用程序自带 JRE,有时所安装的 JDK 在环境路径中的优先级较低。现在有两个选择:

  1. 卸载另一个拥有自己的 JDK/JRE 的应用程序。
  2. 有时不可能删除其他应用程序,这就是我的情况。因此,我把自己安装的 JDk 在环境路径中的优先级提高了。

enter image description here

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

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

我改变了环保路线 低于 H:\Program Files\Java\jdk-13.0.1\binC:\Program Files (x86)\Common Files\Oracle\Java\javapath

像这样:

路径

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

或者

路径

%JAVA_HOME%
%JRE_HOME%

当我尝试运行一些 Groovy 脚本时,情报也有类似的问题。 我是这么解决的。

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

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

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

Select eg. Project SDK (corretto-1.8) (or any other compatible version).

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

问题在于您使用 java13(类文件57)编译了代码,而 java 运行时被设置为 java8(类文件52)。

Assuming you have the JRE 13已安装 in your local system, you could change your runtime from 52 to 57. 你可以使用插件 选择 Runtime来完成。要安装它,请点击 < em > File/Settings/Plugins

enter image description here

一旦安装到 帮助/找到行动,键入“运行时”并从下拉菜单中选择 jre 13。

enter image description here

对我来说,它工作后删除 target文件夹

当我最近将 IntelliJ 版本升级到 2020.3时,我遇到了这个问题。我必须用 关闭插件来解决这个问题。插件的名称是 Thrift Support

禁用插件的步骤如下:

  1. 打开 IntelliJ 的首选项。你可以通过点击 mac 中的 Command + ,来实现。
  2. Navigate to plugins.
  3. 在搜索窗口中搜索 Thrift Support插件。点击勾选框图标取消选择。
  4. 单击 Apply 图标。
  5. See this image for reference Disable_Thrift_support_plugin

更多细节请参考这个链接 不支持 ClassVersionError 2020.3版本 intellij。我在上面的链接中发现了这个评论,它对我很有用。

赵评论2020年12月31日08:00 我的 IDEA3.X 没有安装 Erlang 插件,我关闭了节俭支持1.4.0,它工作了。IDEA 3.0和3.1都有同样的问题。

我怎么在 Eclipse 里解出来的

  1. 去项目的属性 enter image description here

  2. 转到 Java 编译器 enter image description here

  3. 在编译器复杂级别改为我的项目使用的 java (我的项目中的 java 11) you can see that it your java that you work when the last message disappear

  4. 申请 enter image description here

最简单的解决方案是在 IDE 中更改 Java 版本。在 Intellij,进入 File-> Project Architecture,将 Project SDK 更改为 Java 运行时支持的版本(在您的情况下,它是52,对应于版本8或更少)。下表显示了 JavaSE 版本和主版本之间的映射:

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

对于 Eclipse IDE,

Please follow the below steps -

  1. 右击“项目”-> “属性”
  2. Click on "Java Compiler"
  3. 检查“启用项目特定设置”
  4. 更正“编译器编译级别”(参考图片附后)
  5. 如果需要,验证并纠正项目的 java 构建路径。

Eclipse Project Properties Window

对于 Intellij IDEA 2021.2.3

在将 ModuleSDK 升级到 openjdk-17之后,它对我很有用。 openjdk version "1.8.0_272"

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

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

我在一个搜索引擎上找到了这个问题,所以也许它能帮到其他人。

  1. 档案
  2. 设定
  3. 构建、执行、部署:
  4. 编译器
  5. Java 编译器
  6. Project bytecode version中选择8

Intellij Project bytecode version 8

我在升级到 java 17之后遇到了这个问题。然后我运行较老的 Run/Debug 配置,需要更新到 JDK 的路径

enter image description here

我在安卓工作室遇到了这个问题。
我修正了这个问题,把 Gradle 升级到了6.5,把 Gradle 插件升级到了4.11。