Gradle: Tidak dapat menentukan versi java dari '11 .0.2 '

133

Saya menjalankan komentar berikut:

./gradlew app:installDebug

hanya untuk bertemu dengan log:

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

Versi gradle saya adalah 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

Saya tidak yakin bagaimana melanjutkan (Saya mencoba meningkatkan / menurunkan, tetapi sejauh ini tidak ada yang berhasil).

PEMBARUAN: Saat saya berlari ./gradlew --version, saya mendapatkan yang berikut:

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

Saya gradle-wrapper.propertiesberisi:

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
lesley2958
sumber
5
Menurut laporan bug ini , apakah mungkin gradle wrapper Anda lebih tua?
Roddy dari Frozen Peas
versi gradle saya adalah 5.1.1, yang menurut saya akan baik-baik saja.
lesley2958
2
Anda menjalankan perintah ./gradlew yang memulai versi gradle yang terkait dengan proyek khusus ini. Tidak ada jaminan bahwa versi proyek sama dengan yang telah Anda instal (5.1.1)
tryman
1
Apakah info versi itu hasil dari gradle --versionatau ./gradlew --version? Proyek berbasis Gradle sering kali menggunakan pembungkus untuk memudahkan pengembang yang berbeda menggunakan versi Gradle yang sama untuk membangun proyek; ini juga membuat build lebih stabil.
Selada dr kubis
itu versigradle --version
lesley2958

Jawaban:

123

Ada dua aplikasi Gradle berbeda di sistem Anda.

  1. yang seluruh sistem Gradle
    Aplikasi ini dipanggil oleh gradle (arguments).

  2. the gradle-wrapper
    Gradle-wrapper khusus untuk setiap proyek dan hanya dapat dipanggil di dalam direktori proyek, menggunakan perintah ./gradlew (arguments).

Versi gradle seluruh sistem Anda adalah 5.1.1 (seperti yang dijelaskan OP di komentar, menjalankan perintah gradle --version mengembalikan versi 5.1.1).

Namun, kegagalan tersebut adalah hasil dari panggilan ke gradle-wrapper ( ./gradlew). Bisakah Anda memeriksa versi pembungkus gradle proyek Anda? Untuk melakukan itu, jalankan ./gradlew --versiondi dalam folder proyek Anda, di direktori tempat file gradlew dan gradlew.bat berada.

Pembaruan 1:
Karena ./gradlew --versiongagal dijalankan , Anda dapat memeriksa versi pembungkus Anda secara manual dengan membuka file:

(folder root proyek) /gradle/wrapper/gradle-wrapper.properties

dengan editor teks sederhana. "DistributionUrl" di dalamnya harus memberi tahu kita apa versi pembungkusnya.

Pembaruan 2: Sesuai pertanyaan OP yang diperbarui, versi gradle-wrapper adalah 4.1RC1.
Gradle menambahkan dukungan untuk JDK 11 di Gradle 5.0 . Karenanya, karena 4.1RC tidak mendukung JDK 11, ini pasti menjadi masalah.

Cara yang jelas, adalah memperbarui gradle-wrapper proyek Anda ke versi 5.0. Namun, sebelum memperbarui, coba jalankan gradle app:installDebug. Ini akan menggunakan Gradle terinstal di seluruh sistem yang versinya 5.1.1 dan mendukung Java 11. Lihat apakah ini berfungsi. Jika ya, maka buildscript Anda (file build.gradle) tidak terpengaruh oleh perubahan apa pun yang mengganggu antara v.4.1RC1 dan v.5.1.1 dan Anda kemudian dapat memperbarui pembungkus Anda dengan mengeksekusi dari baris perintah di dalam folder proyek Anda: gradle wrapper --gradle-version=5.1.1[ *].

Jika gradle app:installDebuggagal dijalankan dengan benar, mungkin Anda perlu mengupgrade buildscript Gradle Anda. Untuk mengupdate dari v.4.1RC1 ke 5.1.1, proyek Gradle menyediakan panduan ( 1 , 2 ) dengan perubahan dan fitur yang tidak digunakan lagi di antara rilis minor, sehingga Anda bisa mengupdate secara bertahap ke versi terbaru.

Atau, jika karena alasan tertentu Anda tidak dapat atau tidak ingin mengupgrade buildscript Gradle, Anda selalu dapat memilih untuk mendowngrade versi Java Anda ke versi yang didukung Gradle 4.1RC1.

[*] Seperti yang ditunjukkan dengan benar dalam jawaban lain oleh @lupchiazoem, gunakan gradle wrapper --gradle-version=5.1.1(dan bukan ./gradlewseperti yang saya posting di sana karena kesalahan). Alasannya adalah Gradle berjalan di Java. Anda dapat memperbarui gradle-wrapper menggunakan distribusi Gradle yang berfungsi, baik Gradle yang diinstal di seluruh sistem atau gradle-wrapper itu sendiri. Namun, dalam hal ini pembungkus Anda tidak kompatibel dengan versi Java yang Anda instal, jadi Anda harus menggunakan Gradle di seluruh sistem (alias gradledan tidak ./gradlew).

tryman
sumber
1
@try, terima kasih! bagi saya itu adalah pembaruan 2 Anda yang membantu saya. Sebagai aturan umum saya pikir saya akan memeriksa versi gradle yang akan datang.
Avid Programmer
Anda tidak menyatakan dengan tepat apa PENYEBAB kesalahan tersebut. Versi berbeda?
João Pimentel Ferreira
Apa? Saya pikir Pembaruan 2 cukup jelas. Dia mencoba menjalankan Gradle wrapper versi 4.1RC1 dengan JDK11. Gradle menambahkan dukungan untuk JDK11 pada versi 5.0. Jadi apa kebingungan Anda @ JoãoPimentelFerreira? Itulah penyebabnya, sisanya adalah solusi tentang cara mengupdate bungkus proyek ke versi yang lebih baru yang mendukung JDK11.
tryman
1
Sekarang giliranku menjadi bingung. Jika Anda memang memiliki pembungkus gradle di folder proyek Anda dan pemasangan Gradle di seluruh sistem, solusi langkah demi langkah di atas akan bekerja untuk Anda. Apakah Anda mencoba memutakhirkan pembungkus Anda dengan menjalankan di dalam folder proyek Anda perintah pembaruan gradle wrapper --gradle-version=5.0? Ganti 5.0 dengan versi yang Anda inginkan, saya rasa sekarang yang terbaru adalah 5.4
tryman
1
Namun peringatan: Antara versi 3.3 pembungkus Anda dan versi 5.x apa pun, pasti ada beberapa perubahan yang dapat Anda temui atau tidak. Itulah mengapa dalam jawaban saya, saya mengarahkan Anda untuk terlebih dahulu membangun proyek Anda dengan Gradle seluruh sistem Anda untuk memverifikasi bahwa semuanya berjalan lancar dengan versi 5.x yang ingin Anda tingkatkan sebelum memperbarui pembungkus proyek Anda. Jika terburu-buru (saya merasakan urgensi dalam nada Anda) Anda selalu dapat menggunakan gradle sistem secara langsung atau menurunkan versi ke JDK yang lebih lama dan mengejar ketinggalan untuk meningkatkan pembungkus Anda nanti.
tryman
34

Karena distributionUrlmasih mengarah ke versi yang lebih lama, perbarui pembungkus menggunakan:

gradle wrapper --gradle-version 5.1.1

Catatan: Gunakan gradledan tidakgradlew

lupchiazoem
sumber
Itu bekerja. Perintah tersebut memperbarui versi pembungkus gradle saya. Terima kasih.
Daniel
Atau ganti saja versi di gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip Versi 6 dengan JDK12 sepertinya tidak berfungsi. 5.1.1 berfungsi dengan baik, terima kasih.
Liam Kernighan
11

Dalam kasus saya, JAVA_HOMEvariabelnya disetel ke /usr/lib/jvm/jdk-11.0.2/. Itu sudah cukup untuk menghapus variabel seperti ini:

$ export JAVA_HOME=

dr0i
sumber
1
Ini juga memecahkan masalah saya. jenv mungkin memulai masalah saya pada awalnya.
jokarl
bagi saya GRADLE_HOMEtelah diperbarui (ke 5.4.1 '') tetapi bukan versi gradle (masih menunjuk ke versi yang lebih lama 4.3) yang aneh tetapi terminal restart berfungsi dengan baik. sesuatu yang aneh dengansource ~/.bash_profile
prayagupd
7

Memperbarui gradle/wrapper/gradle-wrapper.propertiesdengan versi berikut memperbaikinya untuk saya:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Manuel Schmitzberger
sumber
6

tl; dr : downgrade java dengan menjalankanupdate-alternatives


Versi gradle sistem saya adalah 4.4.1, dan versi pembungkus gradle adalah 4.0. Setelah menjalankan perintah yang diberikan oleh beberapa jawaban lain:

gradle wrapper --gradle-version 4.4.1

Saya masih mengalami kesalahan yang sama:

FAILURE: Build failed with an exception.

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

Ternyata java 11 tidak didukung hingga gradle 4.8, dan repositori perangkat lunak saya hanya memiliki 4.4.1. (Juga, meningkatkan ke versi gradle yang lebih baru mungkin tidak kompatibel dengan paket yang saya coba kompilasi.)

Jawabannya adalah downgrade java. Sistem saya sebenarnya sudah menginstal java8, dan mudah untuk beralih di antara versi java dengan menjalankan perintah ini dan mengikuti petunjuknya:

sudo update-alternatives --config java
craq
sumber
5

Karena versi pembungkus tidak mendukung 11+, Anda dapat membuat trik sederhana untuk menipu versi InteliJ yang lebih baru selamanya.

  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/

Atau Jika Anda ingin bekerja dengan java 11+, Anda hanya perlu memperbarui versi pembungkus ke 4.8+

SuperAndrew
sumber
1
Sekadar pemberitahuan JANGAN coba solusi ini di Android Studio. Saya akan memecahkannya.
Mauricio Sartori
3

Singkatnya, tingkatkan versi Anda gradlewmenggunakan gradlealat sistem . Perhatikan bahwa peningkatan di bawah ini berfungsi meskipun gradleversi sistem Anda adalah < 5.

gradle wrapper --gradle-version=5.1.1
Rocky Inde
sumber
3

Saya memiliki masalah yang sama di sini. Dalam kasus saya, saya perlu menggunakan versi lama JDK dan saya menggunakan sdkmanager untuk mengelola versi JDK, jadi, saya mengubah versi mesin virtual menjadi 1.8.

sdk use java 8.0.222.j9-adpt

Setelah itu, aplikasi berjalan seperti yang diharapkan di sini.

Maciel Bombonato
sumber
1

Saya menyelesaikan ini dengan mengklik File -> Struktur Proyek kemudian mengubah Lokasi JDK menjadi Menggunakan JDK Tertanam (Disarankan)

Derrick Lamptey
sumber
0

Saya mengalami masalah serupa. Saya menghapus ini:

  • perpustakaan dan cache dari folder .idea (YourApp> .idea> ..) DAN
  • isi dari folder build.

    lalu bangun kembali.

* JANGAN LUPA MEMBACKUP PROYEK ANDA DULU *

KHAN
sumber
0

Saya mengalami masalah yang sama di Ubuntu 18.04.3 LTS. Dalam kasus saya, apt menginstal gradle versi 4.4.1. Versi java yang sudah diinstal adalah 11.0.4

Pesan build yang saya dapatkan adalah

Could not determine java version from '11.0.4'.

Pada saat itu, sebagian besar dokumen online mereferensikan gradle versi 5.6, jadi saya melakukan yang berikut:

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

Kemudian saya mengulangi inisialisasi proyek (menggunakan "gradle init" dengan default). Setelah itu, "./gradlew build" berfungsi dengan benar.

Saya kemudian membaca komentar mengenai perubahan format keluaran dari "java --version" yang menyebabkan kerusakan gradle, yang diperbaiki dalam versi gradle yang lebih baru.

MgFrobozz
sumber
0

Dalam kasus saya, saya mencoba membuat dan mendapatkan APK untuk proyek Unity 3D lama (sehingga saya dapat memainkan game tersebut di ponsel Android saya). Saya menggunakan versi Android Studio terbaru, dan semua paket SDK yang dapat saya unduh melalui SDK Manager di Android Studio. Paket SDK berada di

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

Dan pesan error yang saya dapatkan sama kecuali versi JDK (Java Development Kit) "jdk-12.0.2". JDK terletak di

C:\Program Files\Java\jdk-12.0.2

Dan Variabel Lingkungan di Windows adalah JAVA_HOME: C: \ Program Files \ Java \ jdk-12.0.2

Setelah 3 jam penelitian, saya menemukan bahwa Unity tidak mendukung JDK 10. Seperti yang diceritakan di https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. Saran saya adalah:

  1. Copot JDK yang tidak diinginkan jika Anda sudah memasangnya. https://www.java.com/tr/download/help/uninstall_java.xml
  2. Menuju ke http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. Masuk ke / Buka akun Oracle jika belum masuk.
  4. Unduh JDK 8 yang lebih lama tetapi berfungsi untuk pengaturan komputer Anda (32 bit / 64 bit, Windows / Linux, dll.)
  5. Instal JDK. Ingat jalur instalasi. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Jika Anda menggunakan Windows, Buka Variabel Lingkungan dan ubah Jalur Java melalui Klik kanan Saya 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. Di Unity 3D, tekan Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. Juga, di pop-up yang sama, edit SDK Path. (Dapatkan dari Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. Jika perlu, mulai ulang komputer Anda agar perubahan diterapkan.
Onat Korucu
sumber
0

mendapatkan file proyek .. gradle / wrapper / gradlewrapper.properties

di sana Anda dapat mengubah nilainya distributionurlmenjadi versi terbaru. (Ditemukan di docs.gradle.org)

atreyHazelHispanic
sumber
0

Saya menghadapi masalah yang sama dalam pengaturan Docker, ketika saya mencoba menginstal Gradle-2.4dengan JDL 11.0.7. Saya harus menginstal versi yang lebih baru untuk memperbaiki masalah ini.

Berikut adalah Dockerfile Bekerja

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
Adiii
sumber