Gradle: nie można określić wersji Java z „11 .0.2”


134

Uruchomiłem następujący komentarz:

./gradlew app:installDebug

tylko do spełnienia z dziennikiem:

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

Moja wersja Gradle to 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

Nie jestem pewien, jak postępować (próbowałem zaktualizować / obniżyć wersję, ale jak dotąd nic nie zadziałało).

AKTUALIZACJA: Kiedy biegałem ./gradlew --version, otrzymałem następujące informacje:

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

Moje gradle-wrapper.propertieszawiera:

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
zgodnie z tym raportem o błędzie , czy możliwe jest, że twój wrapper gradle jest starszy?
— Roddy of the Frozen Peas

moja wersja gradle to 5.1.1, co moim zdaniem powinno być w porządku.
— lesley2958

2
Uruchamiasz polecenie ./gradlew, które inicjuje wersję gradle powiązaną z tym konkretnym projektem. Nie ma gwarancji, że wersja projektu jest taka sama jak ta, którą zainstalowałeś (5.1.1)
— tryman

1
Czy ta informacja o wersji jest wynikiem gradle --versionlub ./gradlew --version? Projekty oparte na Gradle często używają opakowania, aby ułatwić różnym programistom użycie tej samej wersji Gradle do zbudowania projektu; dzięki temu kompilacje są bardziej stabilne.
— Slaw

to jest wersjagradle --version
— lesley2958,

Odpowiedzi:


124

W twoim systemie są dwie różne aplikacje Gradle.

  1. Gradle całego systemu
    aplikacja ta jest wywoływana przez gradle (arguments).

  2. the gradle-wrapper
    Gradle-wrapper jest specyficzny dla każdego projektu i można go wywołać tylko wewnątrz katalogu projektu, używając polecenia ./gradlew (arguments).

Twoja ogólnosystemowa wersja gradle to 5.1.1 (jak wyjaśnił OP w komentarzach, uruchomienie polecenia gradle --versionzwróciło wersję 5.1.1).

Jednak niepowodzenie jest wynikiem wywołania metody gradle-wrapper ( ./gradlew). Czy możesz sprawdzić wersję opakowania gradle projektu? Aby to zrobić, wykonaj ./gradlew --versionw folderze projektu, w katalogu, w którym znajdują się pliki gradlew i gradlew.bat.

Aktualizacja 1:
Ponieważ uruchomienie ./gradlew --versionnie powiodło się, możesz ręcznie sprawdzić wersję opakowania, otwierając plik:

(folder główny projektu) /gradle/wrapper/gradle-wrapper.properties

za pomocą prostego edytora tekstu. Znajdujący się wewnątrz atrybut „distributionUrl” powinien nam powiedzieć, jaka jest wersja opakowania.

Aktualizacja 2: Zgodnie ze zaktualizowanym pytaniem OP, wersja programu gradle-wrapper to 4.1RC1.
Gradle dodał obsługę JDK 11 w Gradle 5.0 . Dlatego, ponieważ 4.1RC nie obsługuje JDK 11, jest to zdecydowanie problem.

Oczywistym sposobem byłoby zaktualizowanie opakowania gradle projektu do wersji 5.0. Jednak przed aktualizacją spróbuj uruchomić gradle app:installDebug. Spowoduje to użycie programu Gradle zainstalowanego w całym systemie w wersji 5.1.1 i obsługującego język Java 11. Sprawdź, czy to działa. Jeśli tak, to na skrypt buildscript (plik build.gradle) nie wpływają żadne istotne zmiany między wersją 4.1RC1 a wersją 5.1.1 i możesz zaktualizować opakowanie, wykonując polecenie z wiersza poleceń w folderze projektu: gradle wrapper --gradle-version=5.1.1[ *].

Jeśli gradle app:installDebugnie działa poprawnie, być może musisz zaktualizować skrypt kompilacji Gradle. W przypadku aktualizacji z wersji 4.1RC1 do 5.1.1 projekt Gradle zapewnia przewodnik ( 1 , 2 ) zawierający istotne zmiany i przestarzałe funkcje między mniejszymi wydaniami, dzięki czemu można stopniowo aktualizować do najnowszej wersji.

Ewentualnie, jeśli z jakiegoś powodu nie możesz lub nie chcesz zaktualizować skryptu kompilacji Gradle, zawsze możesz zdecydować się na zmianę wersji Java na wersję obsługiwaną przez Gradle 4.1RC1.

[*] Jak słusznie wskazał w innej odpowiedzi @lupchiazoem, użyj gradle wrapper --gradle-version=5.1.1(a nie ./gradlewtak, jak pierwotnie przez pomyłkę tam zamieściłem). Powodem jest to, że Gradle działa w Javie. Możesz zaktualizować swój Gradle-wrapper używając dowolnej działającej dystrybucji Gradle, zainstalowanej w całym systemie Gradle lub samego Gradle-wrappera. Jednak w tym przypadku twój wrapper nie jest kompatybilny z zainstalowaną wersją Javy, więc musisz użyć systemowego Gradle (aka gradlei nie ./gradlew).


1
@tryman thanks! dla mnie pomogła mi Twoja aktualizacja 2. Jako ogólną zasadę myślę, że sprawdziłbym wersję Gradle, która będzie dostępna.
— Avid Programmer

nie podajesz dokładnie, co jest PRZYCZYNĄ błędu. Różne wersje?
— João Pimentel Ferreira

Co? Myślałem, że aktualizacja 2 była całkiem jasna. Próbowała uruchomić opakowanie Gradle wersji 4.1RC1 z JDK11. Gradle dodał obsługę JDK11 w wersji 5.0. Więc jakie jest twoje zamieszanie @ JoãoPimentelFerreira? To była przyczyna, reszta to rozwiązanie, jak zaktualizować opakowanie projektu do nowszej wersji, która obsługuje JDK11.
— tryman

1
Teraz moja kolej, aby się pogubić. Jeśli rzeczywiście masz w folderze projektu zarówno opakowanie gradle, jak i ogólnosystemową instalację Gradle, powyższe rozwiązanie krok po kroku powinno działać dla Ciebie. Czy próbowałeś zaktualizować opakowanie, wykonując w folderze projektu polecenie aktualizacji gradle wrapper --gradle-version=5.0? Zastąp 5.0 żądaną wersją, myślę, że teraz najnowsza to 5.4
— tryman

1
Jednak uwaga: między wersją 3.3 twojego opakowania a dowolną wersją 5.x są pewne istotne zmiany, które możesz napotkać lub nie. Dlatego w mojej odpowiedzi sugeruję, aby najpierw zbudować projekt za pomocą programu Gradle dla całego systemu, aby sprawdzić, czy wszystko działa płynnie z wersją 5.x, do której chcesz zaktualizować, przed zaktualizowaniem opakowania projektu. Jeśli się spieszysz (wyczuwam pilność w twoim tonie), zawsze możesz użyć gradle systemowego bezpośrednio lub przejść na starszą wersję JDK i nadrobić zaległości w aktualizacji wrappera później.
— tryman

34

Jak distributionUrlwciąż wskazuje na starszą wersję, zaktualizuj wrapper używając:

gradle wrapper --gradle-version 5.1.1

Uwaga: użyj, gradlea niegradlew


To działa. Polecenie aktualizuje moją wersję opakowania gradle. Dzięki.
— Daniel

Lub po prostu zamień wersję w gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip wersji 6 na JDK12 nie działa. 5.1.1 działa dobrze, dziękuję.
— Liam Kernighan,

11

W moim przypadku JAVA_HOMEzmienna została ustawiona na /usr/lib/jvm/jdk-11.0.2/. Wystarczyło rozbroić zmienną w ten sposób:

$ export JAVA_HOME=


1
To również rozwiązało mój problem. jenv mógł na początku wywołać moje problemy.
— jokarl

dla mnie GRADLE_HOMEzostał zaktualizowany (do 5.4.1 ''), ale nie wersja gradle (nadal wskazuje na starszą wersję 4.3), co jest dziwne, ale ponowne uruchomienie terminala działało dobrze. coś dziwnegosource ~/.bash_profile
— prayagupd

7

Aktualizacja gradle/wrapper/gradle-wrapper.propertiesza pomocą następującej wersji rozwiązała problem:

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

6

tl; dr : obniż wersję javy, uruchamiającupdate-alternatives


Moja wersja gradle w systemie to 4.4.1, a wersja wrappera to 4.0. Po uruchomieniu polecenia podanego przez kilka innych odpowiedzi:

gradle wrapper --gradle-version 4.4.1

Nadal miałem ten sam błąd:

FAILURE: Build failed with an exception.

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

Okazuje się, że java 11 nie była obsługiwana do gradle 4.8, a moje repozytoria oprogramowania miały tylko 4.4.1. (Ponadto aktualizacja do nowszej wersji Gradle mogła być niekompatybilna z pakietem, który próbowałem skompilować).

Odpowiedzią było obniżenie wersji java. Mój system faktycznie miał już zainstalowany java8 i łatwo było przełączać się między wersjami java, uruchamiając to polecenie i postępując zgodnie z instrukcjami:

sudo update-alternatives --config java


3

Krótko mówiąc, zaktualizuj gradlewza pomocą gradlenarzędzia systemowego . Zwróć uwagę, że poniższe uaktualnienie działa, nawet jeśli gradlewersja twojego systemu to < 5.

gradle wrapper --gradle-version=5.1.1

3

Tutaj miałem ten sam problem. W moim przypadku muszę użyć starej wersji JDK i używam sdkmanagera do zarządzania wersjami JDK, więc zmieniłem wersję maszyny wirtualnej na 1.8.

sdk use java 8.0.222.j9-adpt

Następnie aplikacja działa tutaj zgodnie z oczekiwaniami.




1

Rozwiązałem to, klikając Plik -> Struktura projektu, a następnie zmieniłem lokalizację JDK, aby użyć osadzonego JDK (zalecane)


0

Wpadłem na podobny problem. Usunąłem te:

  • biblioteki i pamięci podręczne z folderu .idea (TwojaAplikacja> .idea> ..) ORAZ
  • zawartość folderu kompilacji.

    następnie odbudować.

* NIE ZAPOMNIJ W PIERWSZEJ KOPII ZAPASOWEJ SWOJEGO PROJEKTU *


0

Napotkałem ten sam problem w Ubuntu 18.04.3 LTS. W moim przypadku apt zainstalował gradle w wersji 4.4.1. Zainstalowana już wersja Java to 11.0.4

Otrzymałem wiadomość dotyczącą kompilacji

Could not determine java version from '11.0.4'.

W tamtym czasie większość dokumentów online odwoływała się do wersji 5.6 programu Gradle, więc wykonałem następujące czynności:

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

Następnie powtórzyłem inicjalizację projektu (używając "gradle init" z domyślnymi ustawieniami). Po tym "./gradlew build" działał poprawnie.

Później przeczytałem komentarz dotyczący zmiany formatu wyjścia z "java --version", która spowodowała zerwanie gradle, co zostało naprawione w późniejszej wersji gradle.


0

W moim przypadku próbowałem zbudować i pobrać APK dla starego projektu Unity 3D (aby móc grać w tę grę na moim telefonie z Androidem). Używałem najnowszej wersji Android Studio i wszystkich pakietów SDK, które mogłem pobrać za pośrednictwem Menedżera SDK w Android Studio. Pakiety SDK znajdowały się w

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

Komunikat o błędzie, który otrzymałem, był taki sam, z wyjątkiem wersji JDK (Java Development Kit) „jdk-12.0.2”. JDK znajdował się w

C:\Program Files\Java\jdk-12.0.2

Zmienną środowiskową w systemie Windows była JAVA_HOME: C: \ Program Files \ Java \ jdk-12.0.2

Po 3 godzinach poszukiwań odkryłem, że Unity nie obsługuje JDK 10. Jak powiedziano w https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Moja sugestia to:

  1. Odinstaluj niechciany JDK, jeśli masz już zainstalowany. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Zmierzać do http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Zaloguj się do / otwórz konto Oracle, jeśli nie jesteś jeszcze zalogowany.
  4. Pobierz starszą, ale funkcjonalną wersję JDK 8 do konfiguracji komputera (32-bitowy / 64-bitowy, Windows / Linux itp.)
  5. Zainstaluj pakiet JDK. Zapamiętaj ścieżkę instalacji. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Jeśli używasz systemu Windows, otwórz zmienne środowiskowe i zmień ścieżkę Java poprzez kliknięcie prawym przyciskiem myszy 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"]
  7. W Unity 3D naciśnij Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Ponadto w tym samym wyskakującym okienku edytuj ścieżkę SDK. (Zdobądź to od Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. W razie potrzeby uruchom ponownie komputer, aby zmiany odniosły skutek.

0

dostałem się do pliku projektu .. gradle / wrapper / gradlewrapper.properties

tam możesz zmienić wartość distributionurlna zawsze ostatnią wersję. (Znalezione na docs.gradle.org)


0

Miałem ten sam problem w konfiguracji Dockera, gdy próbowałem zainstalować Gradle-2.4z JDL 11.0.7. Muszę zainstalować późniejszą wersję, aby naprawić problem.

Oto działający plik 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.