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

ฉันไม่แน่ใจว่าจะดำเนินการต่ออย่างไร (ฉันลองอัปเกรด / ดาวน์เกรดแล้ว แต่ก็ยังไม่ได้ผล)

UPDATE: เมื่อฉันวิ่ง./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 wrapper ของคุณเก่ากว่า
Roddy of the Frozen Peas

gradle เวอร์ชันของฉันคือ 5.1.1 ซึ่งฉันคิดว่าน่าจะใช้ได้
lesley2958

2
คุณรันคำสั่ง. /gradlew ซึ่งเริ่มต้นเวอร์ชัน gradle ที่เชื่อมโยงกับโปรเจ็กต์เฉพาะนี้ ไม่มีการรับประกันว่าเวอร์ชันของโครงการจะเหมือนกับเวอร์ชันที่คุณติดตั้งไว้ (5.1.1)
tryman

1
ข้อมูลเวอร์ชันนั้นเป็นผลมาจากgradle --versionหรือ./gradlew --version? โครงการที่ใช้ Gradle มักจะใช้กระดาษห่อหุ้มเพื่อให้ง่ายขึ้นสำหรับนักพัฒนาที่แตกต่างกันในการใช้ Gradle เวอร์ชันเดียวกันในการสร้างโครงการ นอกจากนี้ยังทำให้การสร้างมีเสถียรภาพมากขึ้น
Slaw

นั่นคือเวอร์ชันของgradle --version
lesley2958

คำตอบ:


125

มีแอปพลิเคชัน Gradle สองแอปพลิเคชันที่แตกต่างกันในระบบของคุณ

  1. ทั้งระบบ Gradleโปรแกรมนี้ถูกเรียกโดย
    gradle (arguments)

  2. gradle กระดาษห่อ
    gradle ./gradlew (arguments)กระดาษห่อเป็นเฉพาะกับทุกโครงการและสามารถเรียกภายในไดเรกทอรีของโครงการโดยใช้คำสั่ง

เวอร์ชัน gradle ทั่วทั้งระบบของคุณคือ 5.1.1 (ตามที่ OP อธิบายไว้ในความคิดเห็นโดยเรียกใช้คำสั่งที่gradle --versionส่งคืนเวอร์ชัน 5.1.1)

อย่างไรก็ตามความล้มเหลวเป็นผลมาจากการเรียกใช้ gradle-wrapper ( ./gradlew) คุณช่วยตรวจสอบรุ่น gradle wrapper ของโปรเจ็กต์ได้ไหม ในการทำเช่นนั้นให้ดำเนินการ./gradlew --versionภายในโฟลเดอร์ของโปรเจ็กต์ของคุณในไดเร็กทอรีที่มีไฟล์ gradlew และ gradlew.bat

อัปเดต 1:
เนื่องจากการทำงาน./gradlew --versionล้มเหลวคุณสามารถตรวจสอบเวอร์ชันของ Wrapper ได้ด้วยตนเองโดยเปิดไฟล์:

(โฟลเดอร์รูทของโปรเจ็กต์) /gradle/wrapper/gradle-wrapper.properties

ด้วยโปรแกรมแก้ไขข้อความที่เรียบง่าย ภายใน "distributionUrl" ควรบอกเราว่าเวอร์ชันของ Wrapper คืออะไร

อัปเดต 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 ของคุณ (file build.gradle) จะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงที่ไม่สมบูรณ์ระหว่าง v.4.1RC1 และ v.5.1.1 จากนั้นคุณสามารถอัปเดต wrapper ของคุณได้โดยดำเนินการจากบรรทัดคำสั่งภายในโฟลเดอร์ของโปรเจ็กต์: gradle wrapper --gradle-version=5.1.1[ *]

หากgradle app:installDebugไม่สามารถดำเนินการได้อย่างถูกต้องบางทีคุณอาจต้องอัพเกรด Gradle buildscript ของคุณ สำหรับการอัปเดตจาก v.4.1RC1 เป็น 5.1.1 โปรเจ็กต์ Gradle จะให้คำแนะนำ ( 1 , 2 ) พร้อมการเปลี่ยนแปลงที่ไม่สมบูรณ์และคุณสมบัติที่เลิกใช้งานระหว่างรุ่นรองเพื่อให้คุณสามารถค่อยๆอัปเดตเป็นเวอร์ชันล่าสุดได้

หรือหากด้วยเหตุผลบางประการคุณไม่สามารถหรือไม่ต้องการอัปเกรด Gradle buildscript ของคุณคุณสามารถเลือกดาวน์เกรดเวอร์ชัน Java ของคุณเป็นเวอร์ชันที่ Gradle 4.1RC1 รองรับได้ตลอดเวลา

[*] ตามที่ระบุไว้อย่างถูกต้องในคำตอบอื่นของ @lupchiazoem ให้ใช้gradle wrapper --gradle-version=5.1.1(ไม่ใช่./gradlewตามที่ฉันโพสต์ไว้ตอนแรกโดยไม่ได้ตั้งใจ) เหตุผลคือ Gradle ทำงานบน Java คุณสามารถอัปเดต gradle-wrapper ของคุณโดยใช้การกระจาย Gradle ที่ใช้งานได้ไม่ว่าจะเป็น Gradle ที่ติดตั้งทั้งระบบหรือ Gradle-wrapper เอง อย่างไรก็ตามในกรณีนี้ Wrapper ของคุณเข้ากันไม่ได้กับเวอร์ชัน Java ที่คุณติดตั้งไว้ดังนั้นคุณต้องใช้ Gradle ทั้งระบบ (หรือที่เรียกว่าgradleไม่ใช่./gradlew)


1
@tryman ขอบคุณ! สำหรับฉันมันเป็นการอัปเดต 2 ของคุณที่ช่วยฉัน ตามกฎทั่วไปฉันคิดว่าฉันจะตรวจสอบรุ่นที่กำลังจะออกไป
Avid Programmer

คุณไม่ได้ระบุว่าอะไรคือสาเหตุของข้อผิดพลาด คนละรุ่น?
João Pimentel Ferreira

อะไร? ฉันคิดว่าการอัปเดต 2 นั้นค่อนข้างชัดเจน เธอพยายามเรียกใช้ Gradle wrapper ของเวอร์ชัน 4.1RC1 ด้วย JDK11 Gradle เพิ่มการรองรับ JDK11 ที่เวอร์ชัน 5.0 ความสับสนของคุณคืออะไร @ JoãoPimentelFerreira? นั่นคือสาเหตุส่วนที่เหลือเป็นวิธีแก้ปัญหาเกี่ยวกับวิธีอัปเดต Wrapper ของโครงการเป็นเวอร์ชันที่ใหม่กว่าที่รองรับ JDK11
tryman

1
ตอนนี้ถึงตาฉันที่จะสับสน หากคุณมีทั้ง gradle wrapper ในโฟลเดอร์โปรเจ็กต์ของคุณและการติดตั้ง Gradle ทั่วทั้งระบบวิธีแก้ปัญหาแบบทีละขั้นตอนข้างต้นน่าจะเหมาะกับคุณ คุณลองอัพเกรดกระดาษห่อของคุณโดยการดำเนินการภายในโครงการของคุณโฟลเดอร์คำสั่งปรับปรุงgradle wrapper --gradle-version=5.0? แทนที่ 5.0 ด้วยเวอร์ชันที่คุณต้องการฉันคิดว่าตอนนี้ล่าสุดคือ 5.4
tryman

1
อย่างไรก็ตามข้อควรระวัง: ระหว่างเวอร์ชัน 3.3 ของ Wrapper ของคุณกับเวอร์ชัน 5.x จะมีการเปลี่ยนแปลงบางอย่างที่คุณอาจพบหรือไม่อาจพบได้ นั่นเป็นเหตุผลว่าทำไมในคำตอบของฉันฉันจึงชี้ให้คุณสร้างโครงการของคุณด้วย Gradle ทั้งระบบของคุณก่อนเพื่อตรวจสอบว่าทุกอย่างทำงานได้อย่างราบรื่นด้วยเวอร์ชัน 5.x ที่คุณต้องการอัปเกรดก่อนอัปเดต Wrapper ของโครงการ หากรีบร้อน (ฉันรู้สึกถึงความเร่งด่วนในน้ำเสียงของคุณ) คุณสามารถใช้การไล่ระดับระบบโดยตรงหรือปรับลดรุ่นเป็น JDK รุ่นเก่าและติดตามการอัปเกรดเสื้อคลุมของคุณในภายหลัง
tryman

34

ตามที่distributionUrlยังคงชี้ไปที่เวอร์ชันเก่าให้อัปเกรด Wrapper โดยใช้:

gradle wrapper --gradle-version 5.1.1

หมายเหตุ: ใช้gradleและไม่gradlew


ที่ได้ผล คำสั่งนี้จะอัปเดตเวอร์ชัน gradle wrapper ของฉัน ขอบคุณ
Daniel

หรือเพียงแค่แทนที่เวอร์ชันในgradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip เวอร์ชัน 6 ด้วย JDK12 ดูเหมือนจะไม่ทำงาน 5.1.1 ใช้งานได้ดีขอบคุณ
Liam Kernighan

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
บ้าง

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 wrapper คือ 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 จนถึง gradle 4.8 และที่เก็บซอฟต์แวร์ของฉันมีเพียง 4.4.1 เท่านั้น (นอกจากนี้การอัปเกรดเป็น Gradle เวอร์ชันที่ใหม่กว่าอาจเข้ากันไม่ได้กับแพ็คเกจที่ฉันพยายามรวบรวม)

คำตอบคือการดาวน์เกรด java ระบบของฉันติดตั้ง java8 ไว้แล้วและง่ายต่อการสลับระหว่างเวอร์ชัน java โดยเรียกใช้คำสั่งนี้และทำตามคำแนะนำ:

sudo update-alternatives --config java

5

เนื่องจากเวอร์ชัน Wrapper ไม่รองรับ 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+ คุณก็ต้องอัปเดตเวอร์ชัน wrapper เป็น 4.8+


1
โปรดทราบอย่าลองใช้โซลูชันนี้บน Android Studio ฉันจะทำลายมัน
Mauricio Sartori

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

หลังจากนั้นแอปจะทำงานตามที่คาดไว้ที่นี่



2

ฉันมีปัญหาที่คล้ายกัน: ค่าเริ่มต้นของฉัน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

1

ฉันแก้ไขสิ่งนี้โดยคลิกที่ไฟล์ -> โครงสร้างโครงการจากนั้นเปลี่ยนตำแหน่ง JDK เพื่อใช้ Embedded JDK (แนะนำ)


0

ฉันพบปัญหาที่คล้ายกัน ฉันลบสิ่งเหล่านี้:

  • ไลบรารีและแคชจากโฟลเดอร์ .idea (YourApp> .idea> .. ) และ
  • เนื้อหาของโฟลเดอร์สร้าง

    จากนั้นสร้างใหม่

* อย่าลืมสำรองข้อมูลโครงการของคุณครั้งแรก *


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 --version" ที่ทำให้ gradle พังซึ่งได้รับการแก้ไขใน gradle เวอร์ชันที่ใหม่กว่า


0

ในกรณีของฉันฉันพยายามสร้างและรับ 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 Path โดยคลิกขวาที่ 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. ในความสามัคคี 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

ฉันประสบปัญหาเดียวกันในการตั้งค่า Docker ในขณะที่ฉันพยายามติดตั้งGradle-2.4ด้วยJDL 11.0.7ไฟล์. ฉันต้องติดตั้งเวอร์ชันที่ใหม่กว่าเพื่อแก้ไขปัญหา

นี่คือ Working 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.