我发表了以下评论:

./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——版本,我得到以下:

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 /包装/ 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

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

系统级的Gradle 此应用程序由gradle(参数)调用。 的gradle-wrapper gradle-wrapper是特定于每个项目的,并且只能在项目目录内调用,使用./gradlew命令(参数)。

您的系统级gradle版本是5.1.1(如注释中解释的OP,运行命令gradle——version返回版本5.1.1)。

然而,失败是调用gradle-wrapper (./gradlew)的结果。你能检查你的项目的gradle包装版本吗?要做到这一点,在项目文件夹中执行。/gradlew——version,在gradlew和gradlew.bat文件所在的目录中。

更新1: 当运行./gradlew——version failed时,你可以通过打开文件手动检查包装器的版本:

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

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

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

The obvious way, would be to update your project's gradle-wrapper to version 5.0. However, before updating, try running gradle app:installDebug. This will use your system-wide installed Gradle whose version is 5.1.1 and supports running on Java 11. If this works, then your buildscript (file build.gradle) is not affected by any breaking changes between v.4.1RC1 and v.5.1.1 and you can then update your wrapper by executing from the command line inside your project's folder: gradle wrapper --gradle-version=5.1.1 [*].

如果gradle app:installDebug不能正确执行,那么也许你需要升级你的gradle构建脚本。为了从v.4.1RC1升级到5.1.1,Gradle项目提供了一个指南(1,2),其中包含了小版本之间的重大变化和已弃用的特性,这样你就可以逐步升级到最新版本。

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

[*] As correctly pointed out in the answer by @lupchiazoem, use gradle wrapper --gradle-version=5.1.1 (and not ./gradlew as I had originally posted there by mistake). The reason is Gradle runs on Java. You can update your gradle-wrapper using any working Gradle distribution, either your system-wide installed Gradle or the gradle-wrapper itself. However, in this case your wrapper is not compatible with your installed Java version, so you do have to use the system-wide Gradle (aka gradle and not ./gradlew).


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

Gradle包装器——Gradle version 5.1.1

注意:使用gradle而不是gradlew


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

$ export JAVA_HOME=


我也遇到过同样的问题。升级到gradle 5.0对我来说很有用。

这个链接提供了如何安装gradle 5.0的详细步骤


我也遇到过类似的问题。我删除了这些:

库和缓存从。idea文件夹(YourApp > .idea > ..)和 生成文件夹的内容。 然后重建。

*别忘了先备份你的项目*


因为你的包装器版本不支持11+,你可以做一个简单的技巧来欺骗新版本的InteliJ。

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 

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


我在Ubuntu 18.04.3 LTS中遇到了同样的问题。在我的例子中,apt安装了gradle 4.4.1版本。已经安装的java版本是11.0.4

我得到的构建消息是

Could not determine java version from '11.0.4'.

当时,大多数在线文档都引用了gradle 5.6版本,所以我做了以下工作:

sudo add-apt-repository ppa:cwchien/gradle
sudo apt update
sudo apt upgrade gradle

然后我重复项目初始化(使用gradle初始化默认值)。之后,./gradlew构建可以正常工作。

我后来读到一个评论,关于java -version输出格式的改变,导致gradle崩溃,这在后来的gradle版本中得到了修复。


长话短说,使用系统gradle工具升级你的gradlew。请注意,即使您的系统gradle版本< 5,下面的升级也可以工作。

gradle wrapper --gradle-version=5.1.1

以我为例,我试图为一个旧的Unity 3D项目构建和获得APK(这样我就可以在我的Android手机上玩游戏)。我使用的是最新的Android Studio版本,我可以通过Android Studio的SDK管理器下载所有SDK包。SDK包的位置

C:/Users/Onat/AppData/Local/Android/Sdk 

我得到的错误消息是一样的,除了JDK (Java开发工具包)版本“JDK -12.0.2”。JDK位于

C:\Program Files\Java\jdk-12.0.2

Windows中的环境变量为JAVA_HOME: C:\Program Files\Java\jdk-12.0.2

经过3个小时的研究,我发现Unity不支持JDK 10。我的建议是:

Uninstall unwanted JDK if you have one installed already. Head here Login to/Open a Oracle account if not already logged in. Download the older but functional JDK 8 for your computer set-up(32 bit/64 bit, Windows/Linux etc.) Install the JDK. Remember the installation path. If you are using Windows, Open Environment Variables and change Java Path via Right click My Computer/This PC>Properties>Advanced System Settings>Environment Variables>New>Variable Name: JAVA_HOME>Variable Value: [YOUR JDK Path, Mine was "C:\Program Files\Java\jdk1.8.0_221"] In Unity 3D, press Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221"). Also, in the same pop-up, edit SDK Path. (Get it from Android Studio > SDK Manager > Android SDK > Android SDK Location.) If needed, restart your computer for changes to take effect.


我也遇到过类似的问题:我的默认gradle包装器是版本4。在Gradle 5中添加了对更高版本Java的支持。

我已经更新了我的gradlew描述在这里:https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper

TLTD:

./gradlew wrapper --gradle-version 5.6.2

我通过单击文件->项目结构解决了这个问题,然后将JDK位置更改为使用嵌入式JDK(推荐)


得到项目文件.. gradle /包装/ gradlewrapper.properties

在这里,您可以将distributionurl的值更改为最新版本。(在docs.gradle.org上找到)


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

sdk use java 8.0.222.j9-adpt

在此之后,应用程序将按预期运行。


Tl;dr:运行update-alternatives来降级Java


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

gradle wrapper --gradle-version 4.4.1

我还是犯了同样的错误:

FAILURE: Build failed with an exception.

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

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

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

sudo update-alternatives --config java

更新gradle /包装/ gradle-wrapper。属性与以下版本修复它为我:

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

当我试图用JDL 11.0.7安装Gradle-2.4时,我在Docker设置中也遇到了同样的问题。我必须安装一个更高的版本来解决这个问题。

下面是Working Dockerfile

FROM openjdk:11.0.7-jdk
RUN apt-get update && apt-get install -y unzip
WORKDIR /gradle
RUN curl -L https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -o gradle-6.5.1-bin.zip
RUN unzip gradle-6.5.1-bin.zip
ENV GRADLE_HOME=/gradle/gradle-6.5.1
ENV PATH=$PATH:$GRADLE_HOME/bin
RUN gradle --version


在使用cordova构建android时出现此错误

在尝试了这么多不同的事情之后,我能够简单地解决这个问题:

npm install cordova -g   # to upgrade to version 10.0.0

cordova platform rm android
cordova platform add android    # to upgrade to android version 9.0.0

对于快速和肮脏的测试来说,最简单的方法就是使用覆盖,例如:

> JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/ ./gradlew build

由于包装器检查JAVA_HOME,您可以在每次运行时选择您想要的任何JAVA_HOME。


我有类似的问题在Windows redhat java-11版本,编辑gradle-wrapper。使用gradle-6.5.1-bin.zip更新distributionUrl,如下所示 这对我很有用。

distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip

我在Windows上也遇到了同样的问题。我的gradle配置是使用JDK1.8,但JAVA_HOME配置为使用另一种JDK。

解决方案:

根据gradle中配置的JDK正确设置JAVA_HOME


如果你使用的是android studio 4.2.2版本,那么它将以默认的Java 11.0.8启动

关于Android Studio

将11.0.8修改为JDK 8

1-安装JDK8

2-安装选择运行时插件

3-打开操作选项卡:Command + Shift + A⇧⌘A

4-选择runtime,并在列表中选择jdk 8


您可能错过了安装maven,请安装maven,然后检查。它将在....之后工作


正如其他人所提到的,在Gradle 5中添加了对Java 11的支持。解决方案是升级你的Gradle包装:

Go here to figure out the latest version of Gradle: https://gradle.org/releases/ Upgrade the Gradle wrapper If you have Gradle installed on your machine: gradle wrapper --gradle-version 7.2 If you don't have Gradle installed: Modify gradle/wrapper/gradle-wrapper.properties Update distributionUrl with the latest version of Gradle, e.g. distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip Upgrade the remaining wrapper files (gradle-wrapper.jar, gradlew, gradlew.bat) ./gradlew wrapper --gradle-version 7.2

因为你是从一个旧版本的Gradle升级的,你可能会得到这样的错误:

Could not find method compile() for arguments ...
Could not find method testCompile() for arguments ...

要修复这些问题,请编辑build。gradle,用implementation替换compile的每个实例,用testimplemimplementation替换testCompile。


转到android/gradle/wrapper/gradle-wrapper。并使用最新的gradle版本更新distributionUrl。

访问https://gradle.org/releases/获取最新版本,然后在这里编辑。

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

7.3.3是最新版本。

https \: / / services.gradle.org/distributions/gradle- # latest_gradle-version # -all.zip


导航到Project/gradle/wrapper/gradle-wrapper。属性,并手动更改distributionUrl为distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-bin.zip,它工作了,希望这有助于某人。


进入“项目文件夹/gradle/gradle-wrapper”。在distributionUrl中,你的gradle版本被提到,检查新的更新的gradle版本,并在“distributionUrl”中更改它,完成!


我在Windows上运行Gradle。

在我的例子中,我已经在我的系统中有了旧的Gradle版本,并将其设置为“环境变量”。

这就是错误发生的原因。

所以我删除了旧版本,在“环境变量”-路径变量中设置新版本,它开始工作。


如果你正在开发一个遗留项目;将gradle版本升级到6.9,将gradle插件版本升级到4.2.2。这是Gradle版本,你可以安全地打开没有任何破坏。