我发表了以下评论:
./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.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
答案 0 :(得分:40)
您的系统中有两个不同的Gradle应用程序。
1)系统范围的Gradle
gradle (arguments)
调用此应用程序。
2)渐变包装
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。
摇篮added support for JDK 11 in Gradle 5.0。因此,由于4.1RC不支持JDK 11,因此这肯定是一个问题。
最明显的方法是将项目的gradle-wrapper更新到5.0版。但是,在更新之前,请尝试运行gradle app:installDebug
。这将使用系统范围内已安装的Gradle,其版本为5.1.1并支持Java11。请查看是否可行。如果是这样,则您的buildscript(文件build.gradle)不受v.4.1RC1和v.5.1.1之间的任何重大更改的影响,然后可以通过从项目文件夹中的命令行执行来更新包装器:{ {1}} [*]。
如果gradle wrapper --gradle-version=5.1.1
无法正确执行,则可能需要升级Gradle构建脚本。为了从v.4.1RC1更新到5.1.1,Gradle项目提供了一个指南(1,2),其中包含次要版本之间的重大更改和不推荐使用的功能,因此您可以逐步更新到最新版本版。
或者,如果由于某种原因您不能或不想升级Gradle构建脚本,则始终可以选择将Java版本降级到Gradle 4.1RC1支持的版本。
[*]正如@lupchiazoem在另一个答案中正确指出的那样,请使用gradle app:installDebug
(而不是gradle wrapper --gradle-version=5.1.1
,因为我最初在这里错误地发帖了)。原因是Gradle在Java上运行。您可以使用任何有效的Gradle发行版(系统范围内安装的Gradle或gradle-wrapper本身)更新gradle-wrapper。但是,在这种情况下,您的包装程序与您安装的Java版本不兼容,因此您必须使用系统范围的Gradle(又名./gradlew
而不是gradle
)。
答案 1 :(得分:10)
由于distributionUrl
仍指向较旧的版本,请使用以下方法升级包装器:
gradle wrapper --gradle-version 5.1.1
注意:使用gradle
而不是gradlew
答案 2 :(得分:10)
使用以下版本更新gradle/wrapper/gradle-wrapper.properties
可以为我修复此问题:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
答案 3 :(得分:2)
我在使用 redhat java-11 版本的 Windows 中遇到了类似的问题,编辑了 gradle-wrapper.properties 并使用 gradle-6.5.1-bin.zip 更新了 distributionUrl,如下所示 它对我有用。
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip
答案 4 :(得分:1)
如果您使用的是 android studio 4.2.2 版,它会以默认的 Java 11.0.8 启动
检查您的版本Android Studio -> About Android Studio
将 11.0.8 更改为 JDK 8
1- 安装 JDK8
2- 安装 Choose Runtime plugin
3- 打开操作选项卡:Command + Shift + A ⇧⌘A
4- 选择运行时并在列表中选择 jdk 8
祝你好运!
答案 5 :(得分:1)
tl; dr :通过运行update-alternatives
我的系统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
答案 6 :(得分:1)
要简短回答,请使用系统gradlew
工具升级gradle
。请注意,即使您的系统gradle
的版本为< 5
,也可以进行以下升级。
gradle wrapper --gradle-version=5.1.1
答案 7 :(得分:1)
我遇到了同样的问题。升级到gradle 5.0对我有用。
此链接提供有关如何安装gradle 5.0的详细步骤: https://linuxize.com/post/how-to-install-gradle-on-ubuntu-18-04/
答案 8 :(得分:1)
在我的情况下,JAVA_HOME
变量设置为/usr/lib/jvm/jdk-11.0.2/
。像这样取消设置变量就足够了:
$ export JAVA_HOME=
答案 9 :(得分:0)
我在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 init”)。之后,“ ./ gradlew构建”正常工作。
我后来阅读了有关“ java --version”输出格式更改的评论,该更改导致gradle中断,该问题已在gradle的更高版本中修复。
答案 10 :(得分:0)
就我而言,我试图为旧的Unity 3D项目构建并获取APK(以便可以在Android手机上玩游戏)。我使用的是最新版本的Android Studio,并且可以通过Android Studio中的SDK Manager下载所有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不支持JDK10。如https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/
中所述。我的建议是:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
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"]
Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221")
。Android Studio > SDK Manager > Android SDK > Android SDK Location
获取。)答案 11 :(得分:0)
我遇到了类似的问题:我的默认gradle wrapper
是4.x版,而Gradle 5中已添加了对更高版本Java的支持。
我已经按照以下说明更新了gradlew
:https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper
TLTD:
./gradlew wrapper --gradle-version 5.6.2
答案 12 :(得分:0)
我通过单击文件->项目结构来解决此问题,然后将JDK位置更改为使用嵌入式JDK(推荐)
答案 13 :(得分:0)
获取到项目文件。 gradle / wrapper / gradlewrapper.properties
您可以将distributionurl
的值更改为最新版本。 (位于docs.gradle.org上)
答案 14 :(得分:0)
我在这里遇到了同样的问题。 就我而言,我需要使用旧版本的JDK,并且正在使用sdkmanager来管理JDK的版本,因此,我将虚拟机的版本更改为1.8。
sdk use java 8.0.222.j9-adpt
此后,该应用程序将按预期运行。
答案 15 :(得分:0)
由于包装器版本不支持11+,因此您可以通过简单的技巧永久欺骗新版本的InteliJ。
press3x Shift -> type "Switch Boot JDK" -> and change for java 8.
https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/
或者,如果您想使用Java 11+,只需要将包装器版本更新为4.8+
答案 16 :(得分:0)
我遇到了类似的问题。我删除了这些:
构建文件夹的内容。
然后重建。
*不要忘记备份您的项目*
答案 17 :(得分:0)
在尝试将Gradle-2.4
与JDL 11.0.7
一起安装时,我在Docker设置中遇到了相同的问题。我必须安装later version来解决此问题。
这是工作中的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
答案 18 :(得分:0)
cordova build android --release
时出现此错误尝试了许多不同的事情之后,我能够通过简单地解决此问题:
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
答案 19 :(得分:0)
对于快速而肮脏的测试来说,最简单的方法是使用覆盖,例如:
> JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/ ./gradlew build
由于包装器会检查 JAVA_HOME
,因此您可以在每次运行时选择任何您想要的。
答案 20 :(得分:0)