语义分析期间出现常见错误:不支持的类文件主要版本57。

37

我正在尝试为桌面游戏设置libgdx,但当我尝试生成项目时,出现此错误并且构建失败。 我拥有Java(13.0.2)和Gradle(6.6)的最新版本,都设置为环境变量在路径中。 有人可以帮助我吗?

错误信息如下:

Could not compile settings file 'C:\Users\noemi\Desktop\Test\settings.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 57
  
  java.lang.IllegalArgumentException: Unsupported class file major version 57 

你使用的Java版本是什么? - Nicolas
我正在使用13.0.2版本。 - Noemi
哦,我错过了那个。LibGDX没有针对Java 13进行编译,因此可能存在一些二进制不兼容性。你能否尝试使用Java 11或8? - Nicolas
1
我已经尝试过了,它起作用了,谢谢! - Noemi
7个回答

32

这不是一个LibGDX问题。Gradle 5与Java 13不兼容。你需要更新Gradle(项目中的封装版本)到Gradle 6或更高版本,或者使用较低版本的JRE。

要更新封装的gradle,请进入项目中的gradle/wrapper/gradle-wrapper-properties并更新版本号。我正在使用6.1.1。

distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

如果您有一个较旧的LibGDX项目,可能需要修改android模块中的build.gradle文件以与Gradle 6兼容。您可以复制粘贴将copyAndroidNatives任务替换为此处的任务


1
我已经拥有了最新版本的Gradle,正如我在问题中所写的那样。最后我使用了一个较旧版本的Java,它起作用了。谢谢! - Noemi
是的,但是默认情况下LibGDX项目使用gradle wrapper。 - Tenfour04
1
我想补充一下,您可以在此处了解不同版本的Gradle:https://services.gradle.org/distributions/ - The epic face 007

27

启动失败: 语义分析期间出现常规错误:不支持的类文件主版本61

如何解决这个React Native问题 JAVA JDK 17

进入React Native项目的android/目录

创建一个名为local.properties的文件,并添加以下内容:

sdk.dir=C:\Android\sdk

前往android\gradle\wrapper\gradle-wrapper.properties

将以下内容更改为:

distributionUrl=https://services.gradle.org/distributions/gradle-7.3-all.zip

前往

android\gradle.properties 添加以下内容:

org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED

1
无法启动守护进程。这个问题可能是由于守护进程配置不正确引起的,例如使用了一个未被识别的JVM选项。 - Ejeh
1
React Native:无法识别选项: - 错误:无法创建Java虚拟机。错误:发生了致命异常。程序将退出。 - Ejeh
1
无法识别的选项:- 错误:无法创建Java虚拟机。 错误:发生致命异常。 程序将退出。 - Ejeh
这个可行!使用Java 17.0.2 2022-01-18 LTS在Mac OS上。 - Marc Pope
将 Gradle 版本更新至 7.3 版有所帮助。 - David
你使用的是哪个操作系统? - Ejeh

13
这个问题出现在我运行我两年前编写的旧的Flutter项目时。我认为对于Android项目也可以用同样的方法解决。我使用的是MacOSAndroid Studio Bumblebee
首先,需要进入android文件夹并检查gradle版本:
cd android 
./gradlew --version

enter image description here

它显示Gradle版本为6.7.1,需要注意JVM行,并且我的JDK版本是15.0.2。这对于此项目来说太新了。因此,您必须从open jdk版本降级到旧版本或者在gradle/wrapper/gradle-wrapper.properties中将Gradle版本升级到新版本。
如果您要降级JDK版本,可以从this下载。在我的情况下,我从Java SE 15降级到Java SE 11。
在我打开Flutter项目的Android后。

enter image description here

前往首选项->构建、执行、部署 → 构建工具 → Gradle → ,选择JDK版本11。 在此输入图片描述

前往构建 -> 清除项目 -> 重新构建项目。

enter image description here

打开终端并运行java --version,如果仍然显示JE版本15,则必须先设置JAVA_HOME。

您只需要将以下内容添加到您的.bash_profile.zshrc文件中即可。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.15.jdk/Contents/Home

保存并前往 android 文件夹,然后再次运行

./gradlew --version

它将正确显示JDK版本11。

enter image description here

最后,运行flutter run命令。


3

我降级了Gradle文件,所以出现了这个错误,最终我必须更改Gradle包装器文件为:

distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip

为了

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip

2
如果你正在使用Eclipse,前往:

Eclipse > Preferences > Gradle

Java home 更新为指向 Java 安装路径


1
Java(13.0.2)和Gradle(6.6)不兼容。
修复方法:
你可以选择以下两种方式之一:
1. 将你的JDK版本更改为14。在环境变量JAVA_HOME中修改路径。 2. 或者保持JDK为13.x,并将Gradle版本更改为6.0。在你的项目gradle/wrapper/gradle-wrapper.properties中,将以下行修改为:distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip。可用的Gradle发行版 如何知道兼容的版本?
Java兼容性表格
请查看https://docs.gradle.org/current/userguide/compatibility.html
Java版本 首个支持它的Gradle版本
8 2.0
9 4.3
10 4.7
11 5.0
12 5.4
13 6.0
14 6.3
15 6.7
16 7.0
17 7.3
18 7.5
19 7.6
20 8.1 ⚠

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接