繁体   English   中英

Class 已由较新版本的 Java 环境编译

[英]Class has been compiled by a more recent version of the Java Environment

运行 Selenium 脚本时,我在 Eclipse 控制台中收到以下错误消息:

Class 已由较新版本的 Java 环境(类文件版本 53.0)编译,此版本的 Java 运行时仅识别 class 文件版本最高为 52.0。


  • Java 版本: 8
  • IDE: Eclipse Oxygen
  • Firefox 版本号: 46

这只是版本不匹配。 您已经使用 java 版本 9 编译了代码,并且您当前的 JRE 是版本 8。尝试将您的 JRE 升级到 9。

49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16
61 = Java 17
62 = Java 18
63 = Java 19

IDE:Eclipse Oxygen.3

要临时纠正问题,请执行以下操作:

Project menu > Properties > Java Compiler > Compiler compliance level > 1.8

永久修复可能涉及安装 JDK 9。

仅供参考 1.8 是 Java 8 的名称。

侧边栏

在尝试使用 C#(呼吸新鲜空气)之后,我最近回到了 Java,并将 Eclipse Oxygen 安装到一个以前从未安装过 Java 的干净系统上。 这个默认的一切都是全新安装的 Eclipse Oxygen 但不知何故或其他 Eclipse 无法获得自己的参数来匹配已安装的 jdk。 这是我创建的第二个项目,也是我第二次遇到这种头痛。 是时候回到 C# 了?

相关问题

已由更新版本的 Java Runtime(类文件版本 53.0)编译

你可以试试这个方法

javac --release 8 yourClass.java

您也可能会在 IntelliJ 中看到此错误,这会出现在 Google 中。

我认为这是一个 Gradle 错误而不是 IDE 错误。

修复(从此处窃取)是将 Java 11 配置为 IntelliJ 中的 Gradle JVM:

文件 -> 设置 -> 构建、执行和开发 -> 构建工具 -> Gradle并将 Gradle JVM 更改为 11

在此处输入图像描述

该截图也是从Jetbrains 问题中窃取的

53代表 java-9,因此这意味着您已经使用javac-9编译了任何类,并且您尝试使用jre-8运行它。 使用javac-8重新编译该类或使用 jre-9

对于临时解决方案,只需右键单击项目 => 属性 => Java 编译器 => 那里请选择编译器合规级别 1.8 => .class 兼容性 1.8 => 源兼容性 1.8

然后您的代码将开始在版本1.8上执行。

在 Intellij 中构建 Jar 后,我在控制台遇到了类似的问题。 使用 Java 配置更新到较新版本(Windows -> 配置 Java -> 更新 -> 立即更新)不起作用并停留在 1.8 版(Java 8)。

要在本地切换到更新的版本,我必须从https://www.oracle.com/uk/java/technologies/javase-jdk15-downloads.html安装 Java 15 JDK,并将其添加到我的 Java 运行时环境设置中。

Java 运行时环境设置

我写这个是因为我发现其他答案很难理解。

本质上,您的 JRE 未更新和/或 Eclipse 未配置为使用最新的 JRE。

在 Windows 上,转到控制面板 -> 程序 -> Java -> 更新并继续更新 java

或者,如果您没有 Java,请访问 Oracle 网站并下载最新的 JRE。

完成后,进入eclipse,在项目视图下,右键单击您的项目,选择Java Build Path,双击JRE System Library,然后选择Workspace Default JRE 14.1。

如果此处未显示最新版本的 Java,则可能未安装。 检查您的 JRE(不是 JDK)版本并确保它是最新的。 如果是,请尝试重新启动计算机,然后再试一次。

您的 JDK 版本:Java 8
您的 JRE 版本:Java 9

在这里,您的 JRE 版本与 JDK 版本不同。 在这里,您可以使用 JDK 1.8 版本编译所有 java 类。 如果您只想编译一个 java 类,只需将*.java更改为<yourclassname>.java

javac -source 1.8 -target 1.8  *.java

source:您的源代码编译所需的版本。
目标:您要支持的最旧的 JRE 版本。

我的解决方案是按照 Andrei Ku.netsov 在https://youtrack.jetbrains.com/issue/IDEA-251407/Failed-to-run-Android-project-in-the-Idea-20203-EAP-OutputBuildAction中所说的进行操作-has-been-compiled-by-a-more-recent-version-of-the-Java ,总结如下图:

在此处输入图像描述 “根本原因:IDEA 源代码现在针对 Java 11 进行编译。已知的解决方法是将 Java 11 配置为 Gradle JVM。” (安德烈·库涅佐夫)

您应该检查您的项目方面。

项目属性 > 项目构面

将 java 版本更改为您正在使用的相同版本。 那对我有用!

IDE: Eclipse 2021-09

这是因为您使用 java 版本 9 编译了代码并安装了 java8。 您无需更新即可解决此问题。

右键单击项目 > 属性 > Java 编译器 >取消勾选 - 启用项目特定设置 > 配置工作区设置 >勾选- 使用默认合规性设置 > 应用并关闭。


现在您的代码应该可以正确执行了。

转到 Project 部分,单击 properties > 然后到 Java compiler > check compiler compliance level is 1.8 ,否则底部不应有黄色警告

刷新 gradle 依赖项对我有用:右键单击项目 -> Gradle -> 刷新 Gradle 项目。

我在 Intellij 中遇到了这个错误。 显然,选择 java 1.8 作为项目 SDK 不会影响用于构建项目的 javac 编译器。

要更改它,请转到 Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler,然后将 Project 字节码版本更改为 8。

我在Windows 10上重现了类似的问题,格式如下:

Error: LinkageError occurred while loading main class ...
java.lang.UnsupportedClassVersionError: com/.../ServiceApplication 
has been compiled by a more recent version of the Java Runtime (class file version 62.0), 
this version of the Java Runtime only recognizes class file versions up to 61.0

在将项目从Java 17升级到Java 18之后。

我有关于Java 18的项目设置:

  1. 命令行:
 java version "18.0.1.1" 2022-04-22 Java(TM) SE Runtime Environment (build 18.0.1.1+2-6) Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)

在此处输入图像描述

  1. Project Structure -> Project Settings -> Project

在此处输入图像描述

  1. Project Structure -> Project Settings -> Modules

在此处输入图像描述

  1. Project Structure -> Platform Settings -> SDKs

在此处输入图像描述

这个问题的原因是:

我忘记为Run / Debug Configurations -> Build and run to Java 18而不是Java 17指定正确的版本:

在此处输入图像描述

因为它是用较新的 Java 版本编译的,但在较旧的版本上运行。


如果是Maven相关问题,您可以通过指定Java Compiler-source-target修改 POM


其他有用的链接:

  1. 在 Maven 中设置 Java 版本
  2. 使用特定 Java 版本的 Jar Artifact

如果您使用的是 IntelliJ IDEA 并遇到此错误,请尝试此操作。

  1. Command +,(打开首选项)
  2. 构建、执行、部署 > 构建工具 > Gradle
  3. Gradle JVM > 改成合适的版本

这是一个例子,如果您的计算机运行在旧版本的 java 上并且 Neo4J 是在最新版本上编译的,请尝试在您的计算机上安装相同版本或更高版本。

我在 Sonarqube 上遇到了同样的问题

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

带有 AzureDevOps 错误输出的 Sonarqube:

信息:SonarScanner 4.6.2.2472
信息: Java 1.8.0_231 Oracle Corporation(32 位)
信息:Windows Server 2016 10.0 x86
信息:用户缓存:C:\Windows\system32\config\systemprofile.sonar\cache
信息:扫描仪配置文件:C:\agent_a_work_tasks\SonarQubePrepare_15b84ca1-b62f-4a2a-a403-89b77a063157\5.4.0\classic-sonar-scanner-msbuild\sonar-scanner-4.6.2.2472\bin..\conf\sonar-scanner 。特性
INFO:项目根配置文件:C:\agent_a_work\189.sonarqube\out\sonar-project.properties
信息:在 SonarQube 服务器 9.4.0 上进行分析
INFO:默认语言环境:“en_AU”,源代码编码:“windows-1252”(分析取决于平台)
信息:------------------------------------------------ ----------------------
信息:执行失败
信息:------------------------------------------------ ----------------------
INFO:总时间:0.405s
信息:最终内存:3M/15M
##[error]ERROR:SonarScanner 执行期间出错
java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本


我在 Sonarcube 服务器上安装了 Java v11,但错误是说它的构建代理没有 Java v11。

我决定将 Java v12 bin 路径添加到 Environment Variable Path 以便检测到它。 重要的是,这需要在构建代理上完成:

在此处输入图像描述

对于托管构建代理,您可以安装 JDK v11或使用此 PowerShell 脚本步骤:

- task: PowerShell@2
  displayName: 'Download and Install Java v11'
  inputs:
    targetType: 'inline'
    script: |
      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
      $Command = "c:\jdk-11.0.15_windows-x64_bin.exe"
      $Parms = "/s"
      Write-Host [System.IO.File]::Exists($Command)
      if ([System.IO.File]::Exists($Command)) {
        Write-Host 'Downloading Java11.exe'      
        Invoke-WebRequest https://yourOwnUrl.com/jdk-11.0.15_windows-x64_bin.exe -OutFile $Command
      }
      Write-Host [System.IO.File]::Exists($Command)
      & "$Command" $Prms
      [System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-11.0.15")
      [System.Environment]::SetEnvironmentVariable("Path", [System.Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::Machine) + ";$($env:JAVA_HOME)\bin")

就我而言,我正在使用 VS2019 构建一些使用 ANTLR4 的 C++ 代码。 ANTLR4 是基于 java 的,为了使用它,我运行 java 命令作为自定义构建步骤。

那天早些时候,我将新笔记本电脑上的 JRE(Java 运行时环境)更新到了 1.8。 没想到,自从我运行 ANTLR4 东西已经一年了……我需要完整的 JDK 来用 java 编译。 所以我有一个 1.8 的 RUNTIME,但是 VS2019 构建 shell 正在寻找 JDK1.7 编译器。 一旦我安装了 1.8 JDK,一切都很好。

所以 80% 的时间 JRE 对我来说都很好......只是当我需要完整的 JDK 时, DOH我需要完整的 JDK。

在 build.gradle(app) 更新如下:(为我工作)

 kotlinOptions {
        jvmTarget = '1.8'
    }

对我来说,只需安装旧版本的 testng 即可解决此问题。 看起来它可以用我的 Java 8 编译

如果您使用 IntelliJ IDEA 并遇到此错误,请尝试此操作。

1. Command + , (Open Preferences)
2. Build, Execution, Deployment > Build Tools > Gradle
3. Gradle JVM > Change it to a proper version

检查 IDE 中配置的 Java 的版本,方法是导航到 Settings -> Build, Execution, Deployment > Build Tools > Gradle

spring初始化程序初始化我的项目时遇到同样的问题我们需要匹配用于运行和编译的 java 的版本在“build.gradle.kt”文件中,如下所示:

在此处输入图像描述

就我而言,我使用 IntellJ Idea 并将 JDK11 设置为我的 SDK 和 gradle 设置中的 JDK17。

只需将我的 SDK 更新为 JDK17,即可解决

在“项目设置”(CMD+;) -> SDK中检查JDK

gradle JVM 在“首选项”(CMD+,) -> 构建工具 -> gradle Z18B5A2A17C4DADE39DZD7Z

分级JVM2

spring初始化程序初始化我的项目时遇到同样的问题我们需要匹配java.sourceCompatibility 的版本和用于在“build.gradle.kt”文件中运行和编译的 jvmTarget。

对于 Android Studio,文件 -> 项目结构 [Ctrl + Alt + Shift + S]

参考图像

上周,我将 Mac 的 Android Studio 从 2021.2.1 更新到 2021.3.1。 然后我们的项目由于类似的原因构建失败:

Cause: com/android/tools/idea/gradle/run/OutputBuildAction 已被较新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别 class 文件版本最高为 53.0

我在 Jetbrains YouTrack 论坛上找到了几个讨论: Failed to run Android project in the Idea 2020.3 EAP (OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0)) 建议的解决方法是将定义的 Gradle JDK 版本更新为 JDK11,但是许多 Android 项目不支持 Gradle JDK11,我的也不支持。

另一个解决方案是将 Android Studio 从 2021.3.1 降级到 2021.2.1,它对我有用。 希望能帮助到你。

貌似大家都在用windows做开发,但是如果你用Linux,就把你的Java版本调低。 也许安装 JDK 8,@Nithin 提供的版本表应该让您了解要安装哪个版本。

将编译器版本配置为 1.8(您需要的版本)后,尝试旧版本的 spring 启动,目前默认为 3.0.0,但您可以尝试使用 2.7.6。

在此处输入图像描述

对于 PhpStorm 2022.3 尝试:

sudo apt-get purge openjdk-\*
sudo apt install openjdk-19-jdk
export JAVA_HOME=/usr/lib/jvm/java-19-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
/opt/PhpStorm-223.7571.212/bin/phpstorm.sh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM