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

类已经由最新版本的Java环境(类文件版本53.0)编译,该版本的Java运行时只识别52.0以下的类文件版本。


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


53代表java-9,所以这意味着你拥有的任何类都是用javac-9编译的,你可以尝试用jre-8运行它。要么使用javac-8重新编译该类,要么使用jre-9


这只是版本不匹配。您已经使用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

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

1.8 .项目菜单>属性> Java编译器>编译器遵从级别>

一个永久性的解决方案可能涉及安装JDK 9。

供您参考,Java 8被称为1.8。

侧边栏

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

相关的问题

已被最新版本的Java运行时(类文件版本53.0)编译。


转到项目部分,点击属性>,然后到Java编译器>检查编译器的合规性级别是1.8,或者底部应该没有黄色警告


刷新gradle依赖为我工作:右键单击项目-> gradle ->刷新gradle项目。


你可以试试这种方法

javac --release 8 yourClass.java

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

基本上,您的JRE没有更新,并且/或Eclipse没有配置为使用最新的JRE。

在Windows操作系统下,进入“控制面板->程序-> Java ->更新”,继续更新Java

或者如果你没有Java,去甲骨文的网站下载最新的JRE。

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

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


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

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


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

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


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:编译源代码所需的版本。 target:您希望支持的旧JRE版本。


您应该检查您的Project Facets。

项目属性>项目facet

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


IDE: Eclipse 2021-09

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

右键单击项目>属性> Java Compiler >取消勾选-启用 项目特定设置>配置工作空间设置> tick-Use 默认合规设置>应用并关闭。


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


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


你可能在IntelliJ中也会看到这个错误,在谷歌中也会出现。

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

修复(从这里偷来的)是在IntelliJ中将Java 11配置为Gradle JVM:

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

这张截图也是从《Jetbrains》中偷来的


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

要更改,请进入设置->构建,执行,部署->编译器-> Java编译器,并将项目字节码版本更改为8。


Sonarqube也有同样的问题

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

Sonarqube与AzureDevOps错误输出:

INFO: SonarScanner 4.6.2.2472 INFO: Java 1.8.0_231 Oracle Corporation (32-bit) INFO: Windows Server 2016 10.0 x86 INFO: User cache: C:\Windows\system32\config\systemprofile.sonar\cache INFO: Scanner configuration file: 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.properties INFO: Project root configuration file: C:\agent_a_work\189.sonarqube\out\sonar-project.properties INFO: Analyzing on SonarQube server 9.4.0 INFO: Default locale: "en_AU", source code encoding: "windows-1252" (analysis is platform dependent) INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 0.405s INFO: Final Memory: 3M/15M ##[error]ERROR: Error during SonarScanner execution java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0


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

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

对于托管生成代理,您可以安装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")

我在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的项目设置:

命令行:

Java版本“18.0.1.1”2022-04-22 Java(TM) SE运行时环境(build 18.0.1.1+2-6) Java HotSpot(TM) 64位服务器虚拟机(build 18.0.1.1+2-6,混合模式,共享)

项目结构->项目设置->项目:

项目结构->项目设置->模块:

项目结构->平台设置-> sdk:

这个问题的原因是:

我忘记为运行/调试配置指定正确的版本->构建并运行到Java 18而不是Java 17:

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


如果是与maven相关的问题,您可以通过指定Java编译器的-source和-target来修改POM。


其他有用的链接:

在Maven中设置Java版本 使用特定Java版本的Jar工件


在我的情况下,我用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

通过导航到“设置->构建,执行,部署>构建工具> Gradle”来检查IDE中配置的Java版本


在我的情况下,我使用IntellJ Idea和设置JDK11作为我的SDK和JDK17在gradle设置。

只要把我的SDK更新为JDK17,问题就解决了

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

with

“头参考资料”中的“gradle JVM”(CMD+) ->内置工具-> gradle JVM


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


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


对我来说,解决方案是按照安德烈·库兹涅佐夫在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。”(Andrei“库兹涅佐夫”)


上周,我把Mac上的Android Studio从2021.2.1升级到了2021.3.1。然后我们的项目因为类似的原因而失败了:

原因:com/android/tools/idea/gradle/run/OutputBuildAction已被 由最新版本的Java运行时(类文件 version 55.0),这个版本的Java运行时只识别类 文件版本高达53.0

我在Jetbrains YouTrack论坛上发现了一些讨论:在Idea 2020.3 EAP中运行Android项目失败(OutputBuildAction已由Java运行时的最新版本(类文件版本55.0)编译)。建议的解决方法是将已定义的Gradle JDK版本更新到JDK11,但许多Android项目不支持Gradle JDK11,我的项目也是如此。

另一个解决方案是将Android Studio从2021.3.1降级到2021.2.1,这对我来说很有效。希望能有所帮助。


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

命令+,(打开首选项) 构建,执行,部署>构建工具> Gradle Gradle JVM >更改为合适的版本


看起来每个人都在使用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

我的错误类似:“UnsupportedClassVersionError:类已被最新版本的Java运行时编译。”

解决方案:我尝试将我的JAVA版本从15更新到17,它在我的情况下工作,而不是更新编译器中的所有JRE或做其他事情。

只需下载更新版本的JAVA,并将SYSTEM Variable中的路径更改为17

返回到项目并应用以下步骤:

选择你的项目——>点击属性(最后)---->选择JAVA构建路径——>改变JRE从15到17 ---->应用——>应用并关闭