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