由较新版本的Java Runtime编译(类文件版本57.0)

时间:2019-09-26 23:12:54

标签: java intellij-idea sdk

我使用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

我已经设置了路径,试图在Project结构中找到更改

完整的错误消息:

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)

9 个答案:

答案 0 :(得分:4)

当我安装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

OR

路径

%JAVA_HOME%
%JRE_HOME%

答案 1 :(得分:3)

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

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

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

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

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

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

javapath

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

答案 2 :(得分:2)

我如何在 Eclipse 中解决它

  1. 转到项目的属性 enter image description here

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

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

  4. 申请 enter image description here

答案 3 :(得分:1)

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

转到“项目结构”->“项目”->“项目语言级别”,然后选择“ SDK默认值”。所有项目模块都应使用相同的SDK。

答案 4 :(得分:1)

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

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

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

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

答案 5 :(得分:1)

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

禁用插件的步骤如下:

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

有关详细信息,请参阅此链接 java.lang.UnsupportedClassVersionError 2020.3 version intellij。我在上面的链接中找到了这条评论,这对我有用。

<块引用>

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

答案 6 :(得分:0)

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

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

enter image description here

我也删除了@CrazyCoder建议的路径

答案 7 :(得分:0)

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

假设本地系统中有JRE 13 installed,则可以将运行时间从52更改为57。 您可以使用插件选择运行时进行操作。要安装它,请转到文件/设置/插件

enter image description here

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

enter image description here

答案 8 :(得分:0)

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