Gradle: Не вдалося визначити версію Java з '11 .0.2 '


134

Я запустив наступний коментар:

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

5
Відповідно до цього звіту про помилку , чи можливо ваша обгортка з Gradle старша?
Родді з замороженого гороху

моя версія gradle - 5.1.1, що, на мою думку, має бути добре.
lesley2958

2
Ви запускаєте команду ./gradlew, яка ініціює версію gradle, пов'язану з цим конкретним проектом. Немає гарантій, що версія проекту така сама, як і встановлена ​​вами (5.1.1)
Tryman

1
Чи є інформація про версію результатом gradle --versionчи ./gradlew --version? Проекти на основі Gradle часто використовують обгортку, щоб іншим розробникам було легше використовувати одну і ту ж версію Gradle для створення проекту; це також робить конструкції більш стабільними.
Слоу

ось версіяgradle --version
lesley2958

Відповіді:


124

У вашій системі є два різних програми Gradle.

  1. загальносистемний Gradle
    Ця програма викликається gradle (arguments).

  2. Gradle-обгортка
    The Gradle-обгортка специфічний для кожного проекту і може бути використаний тільки в директорії проекту, використовуючи команду ./gradlew (arguments).

Ваша загальносистемна версія gradle - 5.1.1 (як пояснив ОП у коментарях, запускаючи команду, gradle --versionповернуту версію 5.1.1).

Однак відмова є результатом виклику gradle-wrapper ( ./gradlew). Чи можете ви перевірити версію оболонки gradle вашого проекту? Для цього виконайте ./gradlew --versionвсередині папки вашого проекту в каталозі, де знаходяться файли gradlew та gradlew.bat.

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

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

за допомогою простого текстового редактора. "DistributionUrl" всередині повинен говорити про те, яка версія обгортки.

Оновлення 2: Відповідно до оновленого питання ОП, версія gradle-wrapper становить 4.1RC1.
Gradle додав підтримку JDK 11 у Gradle 5.0 . Отже, оскільки 4.1RC не підтримує JDK 11, це, безумовно, проблема.

Очевидним способом було б оновлення градації-обгортки вашого проекту до версії 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, або саму оболонку gradle. Однак у цьому випадку ваша обгортка не сумісна з встановленою версією Java, тому вам доведеться використовувати загальносистемну Gradle (ака gradleта ні ./gradlew).


1
@tryman дякую! для мене саме ваше оновлення 2 допомогло мені. Як загальне правило, я думаю, що я перевірив би версію градації.
програміст

ви не вказуєте, що саме є ПРИЧИНА помилки. Різні версії?
Жоао Піментел Феррейра

Що? Я подумав, що оновлення 2 було досить зрозумілим. Вона намагалася запустити обгортку Gradle версії 4.1RC1 з JDK11. Gradle додав підтримку JDK11 у версії 5.0. То в чому твоя плутанина @ JoãoPimentelFerreira? Це було причиною, інше - рішення про те, як оновити обгортку проекту на більш пізню версію, яка підтримує JDK11.
Tryman

1
Тепер моя черга плутати. Якщо ви дійсно маєте оболонку gradle у папці свого проекту та встановлену загальну систему Gradle, вищенаведене покрокове рішення повинно працювати для вас. Чи намагалися ви оновити обгортку, виконавши команду оновлення всередині папки проекту gradle wrapper --gradle-version=5.0? Замініть 5.0 на бажану версію, я думаю, зараз найновішою є 5.4
Tryman

1
Однак слово застереження: між версією 3.3 вашої обгортки та будь-якою версією 5.x, можливо, відбудуться деякі неполадки, з якими ви можете або не зіткнетесь. Ось чому у своїй відповіді я вказую вам спершу створити проект із загальнодоступною системою Gradle, щоб переконатися, що все працює нормально з версією 5.x, до якої ви хочете оновити, перш ніж оновити обгортку вашого проекту. Якщо ви поспішаєте (я відчуваю терміновість у вашому тоні), ви завжди зможете скористатися системним градуалом безпосередньо або перейти до більш старого JDK і пізніше оновити обгортку.
пробник

34

Як distributionUrlі досі вказує на старішу версію, оновіть обгортку, використовуючи:

gradle wrapper --gradle-version 5.1.1

Примітка: Використовуйте gradleта не використовуйтеgradlew


Це працює. Команда оновлює мою версію оболонки gradle. Дякую.
Даніель

Або просто замінити версію gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip версії 6 на JDK12, схоже, не працює. 5.1.1 працює чудово, дякую.
Ліам Керніган

11

У моєму випадку JAVA_HOMEзмінна була встановлена ​​на /usr/lib/jvm/jdk-11.0.2/. Було достатньо для зняття такої змінної:

$ export JAVA_HOME=


1
Це і вирішило мою проблему. jenv, можливо, почав мої проблеми спочатку.
jokarl

для мене GRADLE_HOMEбуло оновлено (до 5.4.1 ``), але не версія gradle (все ще вказує на більш стару версію 4.3), що дивно, але термінал перезавантаження працював чудово. щось дивнеsource ~/.bash_profile
prayagupd

7

Оновлення gradle/wrapper/gradle-wrapper.propertiesза допомогою наступної версії виправили це для мене:

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

6

tl; dr : пониження Java за допомогою запуску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'.

Виявляється, java 11 не підтримувався до 4.8, а в моїх сховищах програм було лише 4.4.1. (Крім того, оновлення до новішої версії gradle могло бути несумісним із пакетом, який я намагався скласти.)

Відповідь полягала в зниженні Java. У моїй системі фактично вже встановлено java8, і легко переходити між версіями java, запустивши цю команду та дотримуючись інструкцій:

sudo update-alternatives --config java

5

Оскільки версія обгортки не підтримує версію 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+


1
Просто головою НЕ намагайтесь це рішення на Android Studio. Я його зламаю.
Маурісіо Сарторі

3

Щоб коротша відповідь була короткою, оновіть її gradlewза допомогою системного gradleінструменту. Зверніть увагу, що оновлення нижче працює, навіть якщо ваша gradleверсія системи є < 5.

gradle wrapper --gradle-version=5.1.1

3

У мене була така ж проблема і тут. У моєму випадку мені потрібно використовувати стару версію JDK, і я використовую sdkmanager для управління версіями JDK, тому я змінив версію віртуальної машини на 1.8.

sdk use java 8.0.222.j9-adpt

Після цього додаток працює як очікується тут.




1

Я вирішив це, натиснувши на Файл -> Структура проекту, потім змінив місце розташування JDK на використання вбудованого JDK (рекомендується)


0

Я зіткнувся з подібним питанням. Я видалив ці:

  • бібліотеки та кеші з папки .idea (YourApp> .idea> ..) AND
  • вміст папки збірки.

    потім відбудуйте.

* НЕ ЗАБУДУЙТЕ ПЕРШЕ РЕКЛАМУВАННЯ ПРОЕКТУ *


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 build" спрацював правильно.

Пізніше я прочитав коментар щодо зміни формату вихідного сигналу від "java --версія", який спричинив розрив gradle, що було виправлено у більш пізній версії gradle.


0

У моєму випадку я намагався створити APK для старого проекту Unity 3D (щоб я міг грати в гру на своєму Android-телефоні). Я використовував найновішу версію Android Studio, і всі пакети SDK, які я міг завантажити через менеджер SDK в 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. Якщо потрібно, перезавантажте комп'ютер, щоб зміни набрали чинності.

0

потрапив у файл проекту .. gradle / wrapper / gradlewrapper.properties

там ви можете змінити значення distributionurlна будь-яку найсвіжішу версію. (Знайдено на docs.gradle.org)


0

Я зіткнулася з такою ж питання в налаштуваннях Докер, в той час як я намагався встановити Gradle-2.4з JDL 11.0.7. Мені потрібно встановити більш пізню версію, щоб виправити проблему.

Ось робочий докерфайл

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.