不支持的类文件主版本61错误

30

我正在尝试运行一个Flutter应用程序,尝试时出现了这个错误,我的做法是希望在没有Android Studio的情况下运行Flutter应用程序,所以我下载了Android SDK和JDK 17,在运行了flutter doctor并得到一切良好的回复后,我尝试运行它,但出现了这个错误:

FAILURE: Build failed with an exception.

* Where:
Build file 'E:\Flutter Apps\first_app\android\build.gradle'

* What went wrong:
Could not compile build file 'E:\Flutter Apps\first_app\android\build.gradle'.
> startup failed:
  General error during semantic analysis: Unsupported class file major version 61
.............

所以我尝试了一个旧版本的JDK,它给了我另一个错误,于是我看到第三个解决方案是使用JDK 17运行,并在gradle.properties中降级gradle,但这只给了我第四个错误,那么有人知道这个错误的最终解决方案吗?


你的Java和/或javac在1.17级别上未激活。不知何故,它正在使用早期版本。请检查PATH。您可以在命令行中使用javac -version来执行此操作。 - g00se
@g00se 它打印了 javac 17。 - DeveloperOmar100
1
我认为这是兼容性的问题。 - DeveloperOmar100
所以我下载了 JDK 16 并将 gradle 更新到 7.0 - 根据兼容性表,它一开始运行了,但后来给了我这个错误。 - DeveloperOmar100
1
执行任务“:app:processDebugMainManifest”失败。
无法使私有最终Java.lang.String Java.io.File.path字段可访问:模块Java.base不会向未命名的模块@ac71d33“打开Java.io”。
- DeveloperOmar100
显示剩余3条评论
7个回答

28

根据 DeveloperOmar 100 的回答,我找到了以下解决方案:

  1. 将您的Java版本切换到兼容版本,在我的情况下是Java 版本16.0.2

    要切换它,您必须设置路径。(例如对于Mac,您可以使用java_home命令)。

  2. 检查您的Gradle版本并更新它,以便它与之兼容(请参见Gradle包装器文档)。因此,在我的情况下,我需要更改android / gradle / wrapper / gradle-wrapper.properties中的distributionUrl属性:

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

使用 Gradle 发布版本 distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-bin.zip,截至 2021 年 12 月,与 Java 16.0.2 兼容。 - Vilmir
5
注意,从Gradle 7.3版本开始,它支持Java 17,因此将distributionUrl版本设置为最新的7.3.x版本(例如在本文撰写时是7.3.3)应该可以解决问题。 - David Moles
我发现在按照 https://docs.gradle.org/7.4/userguide/upgrading_version_6.html 的Gradle升级过程之前,我必须切换回兼容的Java版本。此外,我的GRADLE_HOME环境变量可能是问题的一部分。 - cowang
同样的错误,我使用的是MacOS,JDK版本是:openjdk 17.0.2 2022-01-18。 - thecr0w

7

对于我来说,升级Gradle解决了这个问题。我只需要更改gradle-wrapper.properties文件中的这一行:

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

这个解决方案对我有效。我已经将我的Gradle从6.7更新到7.4。 - Hoa Nguyen
为我工作,谢谢! - Khan Sharukh

2

解决方案

1,编辑 Gradle 路径:6.7 => 7.3

enter image description here

2、更新类路径:4.1.0 => 7.0.0

enter image description here


1
我在Windows电脑上尝试使用Kotlin/Compose时遇到了同样的问题。 我按照https://github.com/JetBrains/compose-jb/tree/master/tutorials/Getting_Started上的说明进行操作。 在遇到的所有问题都解决之前,我苦苦挣扎了几个小时。
解决方案:
  • 更改Gradle JVM:11(版本11.0.12)

  • 在build.gradle.kts中删除以下内容:

    tasks.withType { kotlinOptions.jvmTarget = "16" }

问题的原因:
我开始安装
  • 最新的JDK(版本17)
  • IntelliJ IDEA 2021.3.2(社区版)
然后我用以下设置创建了一个“hello world”示例:
  • 项目模板:Compose Desktop Application 使用 Kotlin 1.5.31

  • 构建系统:Gradle Kotlin

  • 项目JDK:17 Oracle OpenJDK 版本 17.0.2

  • 模板:Compose Desktop Module

  • 目标JVM版本:16

  • 测试框架:JUnit 5

当项目创建后,我更新了build.gradle.kts。
plugins {
  kotlin("jvm") version "1.6.10"
  id("org.jetbrains.compose") version "1.0.1"
}

构建时的第一个错误

错误!在源代码单元“BuildScript”中的“语义分析”阶段出现异常。不支持的类文件主版本61

我通过更改gradle设置来解决了这个问题

  • Gradle JVM: 11 (版本11.0.12)

现在构建成功了,但运行会失败

运行时的第二个错误

任务“:run”的执行失败。进程“命令'C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\java.exe'”以非零退出值1结束

这个问题是通过删除解决的

tasks.withType<KotlinCompile> {
  kotlinOptions.jvmTarget = "16"
}

在 build.gradle.kts 中


1

0

我安装了Java 17,尝试执行Junit 4版本时遇到了这个错误。

不过我将我的Java版本降级到了11,重新运行代码后发现,问题解决了。

如果你的要求允许的话,你也可以将Junit版本升级到5,而不会影响Java版本17。


-8

从系统中简单删除Java 17。这对我很有帮助。


根据这个答案的写法,不清楚移除Java17是问题的根本原因还是仅仅是一个好主意。 - Lance Kind
只有删除Java17才帮助了我。 - Anuar
好的。我可以建议您编辑您的答案为:从系统中删除Java17即可。 - Lance Kind
1
添加“帮助”会让它听起来像是一种“辅助”,而不是一个解决方案。但您的意思是它是一个解决方案。 :-) - Lance Kind
好的,谢谢,我不是母语使用者。 - Anuar
显示剩余2条评论

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