Gradle:无法确定'11 .0.2'中的java版本

les*_*958 83 java gradle gradlew

我发表了以下评论:

./gradlew app:installDebug
Run Code Online (Sandbox Code Playgroud)

只有满足日志:

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
Run Code Online (Sandbox Code Playgroud)

我的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
Run Code Online (Sandbox Code Playgroud)

我不确定如何继续(我尝试升级/降级,但到目前为止没有任何工作).

更新:当我跑步时./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
Run Code Online (Sandbox Code Playgroud)

我的gradle-wrapper.properties包含:

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
Run Code Online (Sandbox Code Playgroud)

try*_*man 81

您的系统中有两种不同的Gradle应用程序.
第一个是系统范围的Gradle,由gradle (arguments)第二个是gradle-wrapper,它是特定于每个项目的.它只能使用命令在项目目录中调用./gradlew (arguments).您的系统范围的gradle版本是5.1.1(正如OP在评论中解释的那样,这是通过运行获得的gradle --version).

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

更新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版.但是,在更新之前,请尝试运行./gradlew --version.这将使用您的系统范围安装的Gradle,其版本为5.1.1并支持Java 11.请查看是否有效.如果是这样,那么你的buildscript(文件的build.gradle)不受v.4.1RC1和V.5.1.1之间的任何重大更改,然后你可以从你的项目的文件夹中的命令行执行更新您的包装:gradle app:installDebug.

如果gradle wrapper --gradle-version=5.1.1无法正确执行,那么您可能需要升级Gradle构建脚本.从v.4.1RC1更新到5.1.1,该摇篮工程提供了指导(1,2)有重大更改和次要版本之间已过时的功能,这样就可以逐步更新到最新版本.

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

  • @tryman 谢谢!对我来说,是你的更新 2 帮助了我。作为一般经验法则,我想我会检查即将发布的 gradle 版本。 (2认同)

lup*_*oem 27

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

gradle wrapper --gradle-version 5.1.1

注意:使用gradle与否gradlew

  • 或者只是替换 `gradle/wrapper/gradle-wrapper.properties` 中的版本 `distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip` 版本 6 与 JDK12 不兼容似乎有效。5.1.1 工作正常,谢谢。 (3认同)

Man*_*ger 22

gradle/wrapper/gradle-wrapper.properties使用以下版本更新为我修复了它:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Run Code Online (Sandbox Code Playgroud)


cra*_*raq 10

tl; dr:通过运行降级javaupdate-alternatives


我的系统gradle版本是4.4.1,gradle wrapper版本是4.0。运行其他几个答案给出的命令后:

gradle wrapper --gradle-version 4.4.1
Run Code Online (Sandbox Code Playgroud)

我仍然有同样的错误:

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.4'.
Run Code Online (Sandbox Code Playgroud)

事实证明,直到 gradle 4.8 才支持 java 11,而我的软件存储库只有 4.4.1。(另外,升级到较新的 gradle 版本可能与我试图编译的包不兼容。)

答案是降级java。我的系统实际上已经安装了 java8,通过运行这个命令并按照说明在 java 版本之间切换很容易:

sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)


dr0*_*r0i 9

在我的情况下,JAVA_HOME变量设置为/usr/lib/jvm/jdk-11.0.2/。像这样取消设置变量就足够了:

$ export JAVA_HOME=


小智 5

由于包装器版本不支持 11+,您可以使用简单的技巧来永远欺骗更新版本的 InteliJ。

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 
Run Code Online (Sandbox Code Playgroud)

https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/

或者,如果您想使用 java 11+,您只需将包装器版本更新为 4.8+

  • 请注意,请勿在 Android Studio 上尝试此解决方案。我会打破它。 (3认同)

Roc*_*nde 5

简而言之,升级您gradlew使用的系统gradle工具。请注意,即使您的系统gradle版本是< 5.

gradle wrapper --gradle-version=5.1.1
Run Code Online (Sandbox Code Playgroud)


Mac*_*ato 5

我在这里遇到了同样的问题。在我的情况下,我需要使用旧版本的 JDK,我使用sdkmanager来管理 JDK 的版本,因此,我将虚拟机的版本更改为 1.8。

sdk use java 8.0.222.j9-adpt
Run Code Online (Sandbox Code Playgroud)

之后,应用程序在这里按预期运行。