Gradle: не удалось определить версию Java из '11.0.2 '

Я запустил следующий комментарий:

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

Ответ 1

В вашей системе есть два разных приложения Gradle.

  1. общесистемный Gradle
    Это приложение вызывается gradle (arguments).

  2. грейдер-фантик
    Оболочка gradle специфична для каждого проекта и может быть вызвана только внутри каталога проекта с помощью команды ./gradlew (arguments).

Ваша общесистемная версия gradle - 5.1.1 (как объяснил в комментариях OP, запуск команды gradle --version вернул версию 5.1.1).

Однако эта ошибка является результатом вызова программы-обертки (./gradlew). Не могли бы вы проверить версию обертки вашего проекта? Для этого выполните ./gradlew --version в папке вашего проекта, в каталоге, где находятся файлы gradlew и gradlew.bat.

Обновление 1:
Поскольку запуск ./gradlew --version не удался, вы можете вручную проверить версию вашей оболочки, открыв файл:

(корневая папка проекта)/gradle/wrapper/gradle-wrapper.properties

с простым текстовым редактором. "Дистрибуция" внутри должна сообщить нам, какова версия оболочки.

Обновление 2: согласно обновленному вопросу OP, версия gradle-wrapper - 4.1RC1.
Gradle добавил поддержку JDK 11 в Gradle 5.0. Следовательно, поскольку 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 предоставляет руководство (1, 2) с критическими изменениями и устаревшими функциями между второстепенными выпусками, чтобы вы могли постепенно обновиться до последней версии.

В качестве альтернативы, если по какой-то причине вы не можете или не хотите обновлять свой скрипт сборки Gradle, вы всегда можете выбрать вариант понижения версии Java до версии, поддерживаемой Gradle 4.1RC1.

[*] Как правильно указано в другом ответе @lupchiazoem, используйте gradle wrapper --gradle-version=5.1.1 (а не ./gradlew как я изначально разместил там по ошибке). Причина в том, что Gradle работает на Java. Вы можете обновить свою упаковку Gradle, используя любой работающий дистрибутив Gradle, либо установленный в вашей системе Gradle, либо сам Gradle-упаковщик. Однако в этом случае ваша оболочка не совместима с установленной версией Java, поэтому вам нужно использовать общесистемный Gradle (он же gradle а не ./gradlew).

Ответ 2

Поскольку distributionUrl по-прежнему указывает на старую версию, обновите оболочку, используя:

gradle wrapper --gradle-version 5.1.1

Примечание: используйте gradle а не gradlew

Ответ 3

В моем случае переменная JAVA_HOME была установлена в /usr/lib/jvm/jdk-11.0.2/. Достаточно было сбросить переменную следующим образом:

$ export JAVA_HOME=

Ответ 4

Поскольку версия-оболочка не поддерживает 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+

Ответ 6

Короче говоря, обновите ваш gradlew с помощью системного инструмента gradle. Обратите внимание, что приведенное ниже обновление работает, даже если версия вашей системы gradle - < 5.

gradle wrapper --gradle-version=5.1.1

Ответ 7

Я столкнулся с аналогичной проблемой. Я удалил эти:

  • библиотеки и кэши из папки .idea(YourApp>.idea>..) И
  • содержимое папки сборки.

    затем восстановить.

* НЕ ЗАБУДЬТЕ ЗАПИСАТЬ ВАШ ПЕРВЫЙ ПРОЕКТ *

Ответ 8

Я столкнулся с той же проблемой в Ubuntu 18.04.3 LTS. В моем случае на apt установлена версия gradle 4.4.1. Уже установленная версия Java была 11.0.4

Сообщение о сборке, которое я получил, было

Could not determine java version from '11.0.4'.

В то время большинство онлайн-документов ссылались на версию 5.6 gradle, поэтому я сделал следующее:

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

Затем я повторил инициализацию проекта (используя "gradle init" со значениями по умолчанию). После этого "./gradlew build" работал правильно.

Позже я прочитал комментарий об изменении формата вывода из "java --version", что привело к поломке gradle, которая была исправлена в более поздней версии gradle.

Ответ 9

В моем случае я пытался собрать и получить APK для старого проекта Unity 3D (чтобы я мог играть в игру на своем телефоне Android). Я использовал самую последнюю версию Android Studio и все пакеты SDK, которые я мог загрузить через SDK Manager в Android Studio. Пакеты SDK были расположены в

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

И сообщение об ошибке, которое я получил, было таким же, за исключением версии JDK (Java Development Kit) "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. Как сказано в https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Мое предложение:

  1. Удалите ненужный JDK, если он у вас уже установлен. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Отправляйтесь в http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Войдите в систему/откройте учетную запись Oracle, если вы еще не вошли в систему.
  4. Загрузите более старую, но функциональную версию JDK 8 для своего компьютера (32-разрядная /64-разрядная версия, Windows/Linux и т.д.)
  5. Установите JDK. Запомните путь установки. (https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/)
  6. Если вы используете Windows, откройте переменные среды и измените путь Java с помощью правой кнопки мыши Мой 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"]
  7. В Unity 3D нажмите Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Кроме того, в том же всплывающем окне измените путь SDK. (Получите это от Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. При необходимости перезагрузите компьютер, чтобы изменения вступили в силу.

Ответ 10

У меня была похожая проблема: по умолчанию gradle wrapper была версия 4.x, а поддержка более высоких версий Java была добавлена в Gradle 5.

Я обновил свой gradlew, как описано здесь: https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper

TLTD:

./gradlew wrapper --gradle-version 5.6.2

Ответ 11

Я решил эту проблему, щелкнув Файл → Структура проекта, затем изменил расположение JDK на Использование встроенного JDK (рекомендуется).

Ответ 12

добрался до файла проекта.. Gradle/упаковщик /gradlewrapper.properties

там вы можете изменить значение distributionurl на самую последнюю версию. (Найдено на docs.gradle.org)

Ответ 13

У меня была такая же проблема здесь. В моем случае мне нужно использовать старую версию JDK, и я использую sdkmanager для управления версиями JDK, поэтому я изменил версию виртуальной машины на 1.8.

sdk use java 8.0.222.j9-adpt

После этого приложение работает, как и ожидалось.