ग्रेडेल: '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

प्रवणता का मेरा संस्करण 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
इस बग रिपोर्ट के अनुसार , क्या यह संभव है कि आपका ग्रेडल रैपर अधिक पुराना हो?
फ्रोजन मटर की रोडी

मेरे ग्रेडिंग का संस्करण 5.1.1 है, जो मुझे लगता है कि ठीक होना चाहिए।
लेसली २

2
आप कमांड चलाते हैं ।/gradlew जो इस विशिष्ट परियोजना से जुड़े ग्रेडेल संस्करण को आरंभ करता है। इस बात की कोई गारंटी नहीं है कि परियोजना का संस्करण वही है जो आपने स्थापित किया है (5.1.1)
tryman

1
उस संस्करण की जानकारी है gradle --versionया ./gradlew --version? ग्रैड आधारित परियोजनाएं अक्सर प्रोजेक्ट को बनाने के लिए एक ही ग्रेडर संस्करण का उपयोग करने के लिए विभिन्न डेवलपर्स के लिए आसान बनाने के लिए एक आवरण का उपयोग करती हैं; यह भी बनाता है और अधिक स्थिर बनाता है।
स्लाव

इसका संस्करण हैgradle --version
lesley2958

जवाबों:


124

आपके सिस्टम में दो अलग-अलग ग्रेड हैं।

  1. पूरे सिस्टम में Gradle
    इस आवेदन से शुरू हो जाती है gradle (arguments)

  2. Gradle-आवरण
    Gradle-आवरण हर परियोजना के लिए विशिष्ट है और केवल परियोजना की निर्देशिका के अंदर लागू किया जा सकता है, आदेश का उपयोग ./gradlew (arguments)

आपका सिस्टम-वाइड ग्रेडल संस्करण 5.1.1 है (जैसा कि ओपी ने टिप्पणियों में समझाया है, कमांड gradle --versionसंस्करण 5.1.1 चला रहा है )।

हालांकि, असफलता ग्रेडेल-रैपर ( ./gradlew) के लिए एक कॉल का परिणाम है । क्या आप अपने प्रोजेक्ट के ग्रेडल रैपर संस्करण की जांच कर सकते हैं? ऐसा करने के लिए, ./gradlew --versionअपनी परियोजना के फ़ोल्डर के अंदर, उस निर्देशिका में निष्पादित करें जहां gradlew और gradlew.bat फाइलें हैं।

अद्यतन 1:
रनिंग के रूप में ./gradlew --versionविफल रहा है, तो आप मैन्युअल को खोलकर अपने आवरण के संस्करण की जांच कर सकते हैं:

(प्रोजेक्ट का रूट फ़ोल्डर) /gradle/wrapper/gradle-wrapper.properties

एक साधारण पाठ संपादक के साथ। अंदर "वितरणUrl" हमें यह बताना चाहिए कि आवरण का संस्करण क्या है।

अद्यतन 2: ओपी के अद्यतन प्रश्न के अनुसार, ग्रेडल-रैपर का संस्करण 4.1RC1 है।
ग्रैडल ने ग्रैडल 5.0 में जेडीके 11 के लिए समर्थन जोड़ा । इसलिए 4.1RC JDK 11 का समर्थन नहीं करता है, यह निश्चित रूप से एक समस्या है।

स्पष्ट तरीका, आपकी परियोजना के ग्रेड-रैपर को संस्करण 5.0 में अपडेट करना होगा। हालाँकि, अपडेट करने से पहले, दौड़ने का प्रयास करें gradle app:installDebug। यह आपके सिस्टम-वाइड स्थापित ग्रेडल का उपयोग करेगा जिसका संस्करण 5.1.1 है और जावा 11 का समर्थन करता है। देखें कि क्या यह काम करता है। यदि ऐसा है, तो अपने buildscript (फ़ाइल build.gradle) v.4.1RC1 और v.5.1.1 के बीच किसी भी तोड़ने परिवर्तन से प्रभावित नहीं है और आप तो अपने प्रोजेक्ट की फ़ोल्डर के अंदर कमांड लाइन से क्रियान्वित करते हुए अपने आवरण को अद्यतन कर सकते हैं: gradle wrapper --gradle-version=5.1.1[ *]।

यदि आप gradle app:installDebugसही तरीके से निष्पादित नहीं कर पाते हैं, तो हो सकता है कि आपको अपने ग्रेडल बिल्डस्क्रिप्ट को अपग्रेड करने की आवश्यकता हो। V.4.1RC1 से 5.1.1 तक अपडेट करने के लिए, ग्रैडल प्रोजेक्ट एक गाइड ( 1 , 2 ) प्रदान करता है जिसमें मामूली बदलावों के बीच टूटने वाले परिवर्तन और पदावनत विशेषताएं हैं, ताकि आप नवीनतम संस्करण में धीरे-धीरे अपडेट कर सकें।

वैकल्पिक रूप से, यदि किसी कारण से आप अपने ग्रेडल बिल्डस्क्रिप्ट को अपग्रेड नहीं कर सकते हैं या नहीं करना चाहते हैं, तो आप हमेशा अपने जावा संस्करण को डाउनग्रेड करने के लिए चुन सकते हैं जो ग्रेडल 4.1 आरसी 1 का समर्थन करता है।

[*] जैसा कि @lupchiazoem द्वारा एक अन्य उत्तर में सही ढंग से बताया गया है, gradle wrapper --gradle-version=5.1.1(और ./gradlewजैसा कि मैंने मूल रूप से गलती से वहां पोस्ट किया था) का उपयोग करें। इसका कारण जावा पर संचालित ग्रैडल है। आप किसी भी कार्यशील ग्रैडल वितरण का उपयोग करके अपने ग्रेड-रैपर को अपडेट कर सकते हैं, या तो आपके सिस्टम-वाइड स्थापित ग्रैडल या स्वयं ग्रेडेल-रैपर। हालांकि, इस मामले में आपका रैपर आपके इंस्टॉल किए गए जावा संस्करण के साथ संगत नहीं है, इसलिए आपको सिस्टम-वाइड ग्रैडल (उर्फ gradleऔर नहीं ./gradlew) का उपयोग करना होगा।


1
@ आर्यमान धन्यवाद! मेरे लिए यह आपका अपडेट 2 था जिसने मेरी मदद की। अंगूठे के एक सामान्य नियम के रूप में मुझे लगता है कि मैं आगे चल रहे ग्रेडेल संस्करण की जांच करूंगा।
AVID प्रोग्रामर

आप वास्तव में यह नहीं बता सकते हैं कि त्रुटि का कारण क्या है। विभिन्न संस्करण?
जोहो पिमेंटेल फरेरा

क्या? मुझे लगा कि अपडेट 2 बहुत स्पष्ट था। वह JDK11 के साथ संस्करण 4.1RC1 के ग्रैडल रैपर को चलाने की कोशिश कर रहा था। ग्रेडल ने संस्करण 5.0 पर JDK11 के लिए समर्थन जोड़ा। तो आपका क्या भ्रम है @ JoãoPimentelFerreira? यही कारण था, बाकी परियोजना के आवरण को बाद के संस्करण में अपडेट करने का तरीका है जो JDK11 का समर्थन करता है।
कोशिश करने वाले

1
अब भ्रमित होने की बारी मेरी है। यदि आपके पास वास्तव में आपके प्रोजेक्ट फोल्डर में दोनों में ग्रेडल रैपर है और सिस्टम-वाइड ग्रैडल इंस्टॉलेशन है, तो उपरोक्त स्टेप बाय स्टेप सॉल्यूशन आपके लिए काम करना चाहिए। क्या आपने अपने प्रोजेक्ट फोल्डर को अपडेट कमांड के अंदर निष्पादित करके अपने रैपर को अपग्रेड करने का प्रयास किया gradle wrapper --gradle-version=5.0? 5.0 को अपने वांछित संस्करण के साथ बदलें, मुझे लगता है कि अब नवीनतम 5.4 है
ट्रैनमैन

1
हालांकि सावधानी का एक शब्द: आपके आवरण के संस्करण 3.3 के बीच किसी भी संस्करण 5.x में कुछ ब्रेकिंग परिवर्तन होने के लिए बाध्य हैं जिन्हें आप सामना कर सकते हैं या नहीं कर सकते हैं। इसीलिए मेरे जवाब में, मैं आपको यह बताने के लिए कि आप अपनी परियोजना के ग्रेडेड के साथ अपनी परियोजना का निर्माण पहले कर रहे हैं, यह सत्यापित करने के लिए कि 5.x के संस्करण के साथ सब कुछ सुचारू रूप से चलता है जिसे आप अपनी परियोजना के आवरण को अपडेट करने से पहले अपग्रेड करना चाहते हैं। अगर जल्दबाज़ी में (मुझे अपने लहज़े में तात्कालिकता का एहसास है) तो आप हमेशा सिस्टम ग्रेडल को सीधे इस्तेमाल कर सकते हैं या पुराने JDK को डाउनग्रेड कर सकते हैं और बाद में अपने रैपर को अपग्रेड कर सकते हैं।
कोशिश करने वाला

34

जैसा distributionUrlकि अभी भी पुराने संस्करण की ओर इशारा कर रहा है, रैपर का उपयोग करके अपग्रेड करें:

gradle wrapper --gradle-version 5.1.1

नोट: उपयोग करें gradleऔर नहींgradlew


यह काम करता है। कमांड मेरे ग्रेडल रैपर संस्करण को अपडेट करता है। धन्यवाद।
डैनियल

या केवल 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 ने शुरू में मेरी समस्याओं को शुरू किया होगा।
जोकर

मेरे लिए GRADLE_HOMEअपडेट किया गया था (5.4.1`` पर) लेकिन ग्रेडल वर्जन नहीं (अभी भी पुराने वर्जन की ओर इशारा करते हुए 4.3) जो अजीब है लेकिन टर्मिनल को ठीक करना फिर से शुरू करना। इसके साथ कुछ अजीब हैsource ~/.bash_profile
प्रयागपाद


6

tl; dr : डाउनग्रेड जावा चलाकरupdate-alternatives


मेरा सिस्टम ग्रेडल संस्करण 4.4.1 था, और ग्रेडल रैपर संस्करण 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'.

यह पता चला है कि जावा 11 को वर्गीकृत 4.8 तक समर्थित नहीं था, और मेरे सॉफ़्टवेयर रिपॉजिटरी में केवल 4.4.1 था। (इसके अलावा, नए ग्रेड के संस्करण में अपग्रेड करना उस पैकेज के साथ असंगत हो सकता है जिसे मैं संकलित करने की कोशिश कर रहा था।)

जवाब था, डाउनग्रेड जावा। मेरे सिस्टम में वास्तव में java8 पहले से ही इंस्टॉल था, और इस कमांड को चलाकर और निर्देशों का पालन करके जावा संस्करणों के बीच स्विच करना आसान था:

sudo update-alternatives --config java

5

क्योंकि रैपर संस्करण 11+ का समर्थन नहीं करता है इसलिए आप इंटेलीज के नए संस्करण को हमेशा के लिए धोखा देने के लिए सरल चाल बना सकते हैं।

  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/

या यदि आप जावा 11+ के साथ काम करना चाहते हैं तो आपको बस 4.8+ के लिए रैपर संस्करण को अपडेट करना होगा


1
बस एक सिर ऊपर Android स्टूडियो पर इस समाधान की कोशिश मत करो। मैं इसे तोड़ दूंगा।
मौरिसियो सार्तोरी

3

लंबे उत्तर को छोटा करने के लिए, gradlewसिस्टम gradleटूल का उपयोग करके अपग्रेड करें । ध्यान दें कि यदि आपका सिस्टम gradleसंस्करण है तो भी नीचे का उन्नयन काम करता है < 5

gradle wrapper --gradle-version=5.1.1

3

मुझे यहाँ भी यही समस्या थी। मेरे मामले में मुझे JDK के पुराने संस्करण का उपयोग करने की आवश्यकता है और मैं JDK के संस्करणों का प्रबंधन करने के लिए sdkmanager का उपयोग कर रहा हूं , इसलिए, मैंने वर्चुअल मशीन के संस्करण को 1.8 में बदल दिया।

sdk use java 8.0.222.j9-adpt

इसके बाद, ऐप यहां अपेक्षित रूप से चलता है।



1

मुझे एक समान समस्या थी: मेरा डिफ़ॉल्ट gradle wrapper संस्करण 4.x था, जबकि ग्रैडल 5 में जावा के उच्च संस्करणों का समर्थन जोड़ा गया है।

मैंने gradlewयहां अपना विवरण अपडेट किया है: https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upmission_wrapper

TLTD:

./gradlew wrapper --gradle-version 5.6.2

1

मैंने इसे फ़ाइल -> प्रोजेक्ट संरचना पर क्लिक करके हल किया, फिर JDK स्थान को एंबेडेड JDK (अनुशंसित) का उपयोग करने के लिए बदल दिया


0

मैं इसी तरह के मुद्दे पर भाग गया। मैंने इन्हें हटा दिया:

  • पुस्तकालयों और .idea फ़ोल्डर से कैश (YourApp> .idea> ..) और
  • बिल्ड फ़ोल्डर की सामग्री।

    फिर पुनर्निर्माण करें।

* अपनी पहली प्राथमिकी वापस लाने के लिए मत भूलना *


0

मैं Ubuntu 18.04.3 LTS में एक ही मुद्दे पर भाग गया। मेरे मामले में, उपयुक्त संकलित संस्करण 4.4.1 स्थापित है। पहले से स्थापित जावा संस्करण 11.0.4 था

मुझे जो निर्माण संदेश मिला वह था

Could not determine java version from '11.0.4'.

उस समय, अधिकांश ऑनलाइन डॉक्स ने क्रमिक संस्करण 5.6 का संदर्भ दिया था, इसलिए मैंने निम्नलिखित कार्य किया:

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

फिर मैंने प्रोजेक्ट इनीशियेशन (डिफॉल्ट्स के साथ "ग्रेडेल इनिट" का उपयोग करके) दोहराया। उसके बाद, "./gradlew build" ने सही तरीके से काम किया।

बाद में मैंने "java --version" से आउटपुट के प्रारूप में बदलाव के बारे में एक टिप्पणी पढ़ी, जो कि ग्रेडल को तोड़ने का कारण बना, जो कि ग्रेड के बाद के संस्करण में तय किया गया था।


0

मेरे मामले में, मैं एक पुराने यूनिटी 3 डी प्रोजेक्ट के लिए एपीके बनाने और प्राप्त करने की कोशिश कर रहा था (ताकि मैं अपने एंड्रॉइड फोन में गेम खेल सकूं)। मैं सबसे हाल के एंड्रॉइड स्टूडियो संस्करण का उपयोग कर रहा था, और सभी एसडीके पैकेज जो मैं एंड्रॉइड स्टूडियो में एसडीके प्रबंधक के माध्यम से डाउनलोड कर सकता था। SDK Package स्थित था

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

और मुझे जो त्रुटि संदेश मिला वह JDK (जावा डेवलपमेंट किट) संस्करण "jdk-12.0.2" को छोड़कर समान था। JDK में स्थित था

C:\Program Files\Java\jdk-12.0.2

और विंडोज में पर्यावरण चर JAVA_HOME था: C: \ Program Files \ Java \ jdk-12.0.2

3 घंटे के शोध के बाद, मुझे पता चला कि एकता जेडीके 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. यदि पहले से लॉग इन नहीं है तो ओरेकल अकाउंट खोलें / लॉगिन करें।
  4. अपने कंप्यूटर सेट-अप (32 बिट / 64 बिट, विंडोज / लिनक्स आदि) के लिए पुराने लेकिन कार्यात्मक JDK 8 डाउनलोड करें।
  5. JDK स्थापित करें। स्थापना पथ याद रखें। ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. यदि आप विंडोज का उपयोग कर रहे हैं, तो पर्यावरण चर खोलें और राइट क्लिक माय के माध्यम से जावा पथ को बदलें 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. यूनिटी 3 डी में, दबाएं Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221")
  8. इसके अलावा, एक ही पॉप-अप में, एसडीके पथ को संपादित करें। (इसे प्राप्त करें Android Studio > SDK Manager > Android SDK > Android SDK Location।)
  9. यदि आवश्यक हो, तो परिवर्तनों को प्रभावी करने के लिए अपने कंप्यूटर को पुनरारंभ करें।

0

परियोजना फ़ाइल के लिए मिला .. gradle / आवरण / 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.