Gradle:无法确定“11.0.2”中的 Java 版本

2022-08-31 06:14:45

我运行了以下评论:

./gradlew app:installDebug

只满足日志:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

我的gradle版本是5.1.1:

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9-LTS)
OS:           Mac OS X 10.13.6 x86_64

我不知道如何继续(我尝试升级/降级,但到目前为止没有任何效果)。

更新:当我跑步时,我得到了以下内容:./gradlew --version

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

My 包含以下内容,包括:.../gradle/wrapper/gradle-wrapper.propertiesdistributionUrl=.../gradle-4.1-rc-1-all.zip

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip

答案 1

您的系统中有两种不同的 Gradle 应用程序。

  1. 系统范围的 Gradle
    此应用程序由 调用。gradle (arguments)

  2. gradle-wrapper
    gradle-wrapper 特定于每个项目,只能在项目的目录中使用命令调用。./gradlew (arguments)

您的系统范围的 gradle 版本是 5.1.1(如 OP 在注释中所述,运行返回版本 5.1.1 的命令)。gradle --version

但是,失败是调用 gradle 包装器 () 的结果。你能检查你的项目的gradle包装器版本吗?为此,请在项目的文件夹中执行,在 gradlew 和 gradlew.bat文件所在的目录中。./gradlew./gradlew --version

更新1:
由于运行失败,您可以通过打开文件来手动检查包装器的版本:./gradlew --version

(项目的根文件夹)/gradle/wrapper/gradle-wrapper.properties

使用简单的文本编辑器。里面的“distributionUrl”应该告诉我们包装器的版本是什么。

更新 2:根据OP的更新问题,gradle包装器的版本是4.1RC1
Gradle 在 Gradle 5.0 中增加了对 JDK 11 的支持。因此,由于4.1RC不支持在JDK 11上运行,这绝对是一个问题。

显而易见的方法是将项目的 gradle 包装器更新到 5.0 版。
但是,在更新之前,请尝试运行 。这将使用系统范围内安装的 Gradle,其版本为 5.1.1,并支持在 Java 11 上运行。如果这有效,那么您的构建脚本(文件 build.gradle)不会受到 v.4.1RC1 和 v.5.1.1 之间的任何重大更改的影响,然后您可以通过从项目文件夹内的命令行执行来更新包装器:[*]。gradle app:installDebuggradle wrapper --gradle-version=5.1.1

如果无法正确执行,那么也许您需要升级 Gradle 构建脚本。为了从 v.4.1RC1 更新到 5.1.1,Gradle 项目提供了一个指南 (12),其中包含次要版本之间的重大更改和不推荐使用的功能,以便您可以逐步更新到最新版本。gradle app:installDebug

或者,如果由于某种原因您无法或不想升级Gradle构建脚本,您可以随时选择将Java版本降级为Gradle 4.1RC1支持运行的版本。

[*]正如@lupchiazoem在答案中正确指出的那样,使用(而不是我最初错误地发布在那里)。原因是Gradle在Java上运行。您可以使用任何有效的 Gradle 发行版(系统范围内安装的 Gradle 或 gradle 包装器本身)更新 gradle 包装器。但是,在这种情况下,您的包装器与您安装的Java版本不兼容,因此您必须使用系统范围的Gradle(又名而不是)。gradle wrapper --gradle-version=5.1.1./gradlewgradle./gradlew


答案 2

由于仍然指向旧版本,请使用以下命令升级包装器:distributionUrl

gradle wrapper --gradle-version 5.1.1

注意:使用与否gradlegradlew


推荐