Gradle:无法从“11.0.2”确定 java 版本

新手上路,请多包涵

我跑了以下评论:

 ./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

我的 .../gradle/wrapper/gradle-wrapper.properties 包含以下内容,包括 distributionUrl=.../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

原文由 lesley2958 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

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

  1. 系统范围的 Gradle

此应用程序由 gradle (arguments) 调用。

  1. gradle 包装器

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

您的系统范围的 gradle 版本是 5.1.1 (正如评论中解释的 OP,运行命令 gradle --version 返回版本 5.1.1)。

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

更新1:

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

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

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

更新 2: 根据 OP 的更新问题,gradle-wrapper 的版本是 4.1RC1

Gradle 在 Gradle 5.0 中添加了对 JDK 11 的支持。因此,由于 4.1RC 不支持在 JDK 11 上运行,这绝对是一个问题。

显而易见的方法是将项目的 gradle-wrapper 更新到 5.0 版。

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

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

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

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

原文由 tryman 发布,翻译遵循 CC BY-SA 4.0 许可协议

由于 distributionUrl 仍然指向旧版本,升级包装器使用:

gradle wrapper --gradle-version 5.1.1

注意:使用 gradle 而不是 gradlew

原文由 lupchiazoem 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题