ग्रेडल को टूल्स नहीं मिलते हैं


160

मैं ग्रेडेड के साथ javadoc doclets का उपयोग कर रहा हूं, इसलिए मुझे पैकेज tools.jar का उपयोग करने की आवश्यकता है, जो कि jdk से लीब फ़ोल्डर में है (मेरे मामले में 1.6.0_26)।

मुद्दा यह है कि ग्रेडेल इसे स्वचालित रूप से नहीं लेता है, इसलिए मैं उस टूल पैकेज को अपने libs फ़ोल्डर में जोड़ रहा था, और फिर इसे dependencies.gradle में जोड़ रहा था।

अब मैं इसे सीधे अपने JDK होम से अपनी निर्भरता में लेना चाहता हूं। क्या ऐसा करने के लिए कोई रास्ता है? मैंने अपनी निर्भरता में अगला प्रयास किया है। क्रम:

compile files("${System.properties['java.home']}/lib/tools.jar")

लेकिन संकलन करते समय यह नहीं मिलता है।


2
यह ध्यान देने योग्य है कि, इसे हल करने के लिए पूर्व-कर्सर के रूप में और जब मैं इसमें भाग ले रहा था, तब आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपने वास्तव में एक JDK स्थापित किया है: P और, कुछ सिस्टम पर, आप tools.jar पाने के लिए devel JDK पैकेज स्थापित करने की आवश्यकता
mrooney

जवाबों:


140

मुझे यह समस्या तब हुई जब मैं सीएलआई के माध्यम से कमांड चलाने की कोशिश कर रहा था।

यह JRE फ़ोल्डर को देखने वाली प्रणाली के साथ एक समस्या थी D:\Program Files\Java\jre8\bin। अगर हम वहां देखें, तो कोई Tools.jarत्रुटि नहीं है।

आपको यह खोजने की आवश्यकता है कि JDKमेरे मामले में कहाँ है: D:\Program Files\Java\jdk1.8.0_11और यदि आप libनिर्देशिका में देखते हैं, तो आप देखेंगे Tools.jar

मैंने एक नया पर्यावरण चर बनाया है JAVA_HOME: यहां छवि विवरण दर्ज करें

और फिर आपको JAVA_HOME को शामिल करने के लिए अपने PATH चर को संपादित करने की आवश्यकता है, अर्थात %JAVA_HOME%/bin; यहां छवि विवरण दर्ज करें

कमांड प्रॉम्प्ट को फिर से खोलें और चलाना चाहिए।


15
tool.jar फ़ोल्डर में %JAVA_HOME%\lib;नहीं है bin
GMsoF

5
इसका मतलब है कि हम दोनों को जोड़ने की जानी चाहिए %JAVA_HOME%/binऔर %JAVA_HOME%/libकरने के लिए Pathचर तो?
एरिक

3
भले ही tools.jar वास्तव में \ lib में है, केवल \ बिन को पथ में जोड़ने के रूप में मेरे लिए काम किया है, लेकिन यह मत पूछें कि क्यों।
PHPirate

1
परिवर्तनों को प्रभावी करने के लिए आमतौर पर पुनरारंभ / लॉगआउट आवश्यक है।
reiner_zuphall

4
मुझे PATH प्रविष्टि C: \ ProgramData \ Oracle \ Java \ javapath को निकालना पड़ा और इसे C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx से बदल दिया गया, यह बहन JRE निर्देशिका के लिए डिफ़ॉल्ट था
जॉन

76

मिल गया। सिस्टम गुण 'java.home' JAVA_HOME पर्यावरण चर नहीं है। JAVA_HOME JDK को इंगित करता है, जबकि java.home JRE को इंगित करता है। अधिक जानकारी के लिए वह पृष्ठ देखें ।

Soo ... मेरी समस्या यह थी कि मेरा स्टार्टअप jre फोल्डर था (C: \ jdk1.6.0_26 \ jre) और jdk फोल्डर नहीं (C: \ jdk1.6.0_26) जैसा कि मैंने सोचा था कि (टूल्स .jar C पर है) : \ jdk1.6.0_26 \ lib फ़ोल्डर)। निर्भरता में संकलित लाइन। क्रमबद्ध होना चाहिए:

compile files("${System.properties['java.home']}/../lib/tools.jar")

28
तो, कैसे ढाल के साथ विचार में java.home सेट करने के लिए?
चिनक्सिंग

73

मुझे एक ही त्रुटि मिली, जो कि एक ग्रैडल टास्क को अंजाम देने की कोशिश कर रहा था। हर बार जब मैं एक कमांड (यानी युद्ध) चलाता हूं, तो प्रक्रिया एक अपवाद की तरह होती है:

उपकरण नहीं मिल सका। कृपया जांचें कि C: \ Program Files \ Java \ Jre8 "एक वैध JDK इंस्टॉल है।

मैंने इस पोस्ट में सूचीबद्ध समाधान की कोशिश की लेकिन उनमें से किसी ने भी इस मुद्दे को हल नहीं किया। यहाँ मेरा समाधान है:

  1. "ग्रैडल टास्क" दृश्य पर जाएं
  2. उस कार्य पर राइट क्लिक करें जिसे आप निष्पादित करना चाहते हैं
  3. ओपन ग्रैडल रन कॉन्फ़िगरेशन चुनें
  4. टैब "जावा होम" में अपने स्थानीय JDK रिपॉजिटरी का चयन करें फिर ठीक पर क्लिक करें

फिर से दौड़ो, आनंद लो!


2
मुझे यह जवाब घंटों की खोज के बाद मिला है, और यह आखिरकार काम कर गया। आपको बहुत - बहुत धन्यवाद!
एलन 47

5
मुझे ओपन ग्रैड रन और जावा होम नहीं मिल सकते। क्या आप आगे बता सकते हैं?

इस के लिए नया होने के नाते, एक "ग्रैडल टास्क" दृश्य में कैसे जाएगा? मुझे दृश्य मेनू के तहत कुछ भी ग्रेड नहीं दिखाई देता है, और न ही कुछ भी ऐसा कुछ लेबल है?
ड्रोनज

48

मैंने gradle.propertiesनिम्नलिखित सामग्री के साथ एक फ़ाइल जोड़ी है:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45

5
लाइनक्स पर, आप ~/.gradle/gradle.propertiesफ़ाइल को एडिट कर सकते हैं , जोड़ सकते हैं org.gradle.java.home=/usr/lib/jvm/java। फेडोरा 24 पर मेरे लिए काम करता है।
samsong8610

36

मेरे पास उबंटू का उपयोग करने का एक समान मामला था । मशीन में केवल JRE लगा था। इसलिए, मैंने अभी JDK को स्थापित करने के लिए नीचे दिए गए कमांड को निष्पादित किया ।

sudo apt install openjdk-8-jdk


1
हां, JRE की जगह JDK लगाने से मेरे लिए भी समस्या हल हो गई।
peschü

20

मैं इस समाधान के लिए संघर्ष कर रहा था। ग्रैडल के साथ एक बेहतर तरीका मिला जैसा यहाँ वर्णित है । हम JVM / JDK की जानकारी ग्रैडल से ही प्राप्त कर सकते हैं।

dependencies {
   runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}

बहुत आसन।


3
मेरे लिए यह काम करता है अगर मैं compileइसके बजाय का उपयोग करता हूंruntime
डोरी

मुझे यह समाधान पसंद है। यह अच्छा और पोर्टेबल है।
एडम प्लम

4
यह समाधान ग्रैडल 4.x के साथ काम नहीं करता है। मुझे ए NullPointerException
थंडरफोर्ज

1
मैं कल्पना कर सकता हूँ कि जब कोई उपकरण न हो, तो कोई भी वापसी नहीं हो सकती है। नवीनतम JDK के साथ उपलब्ध। देखें github.com/gradle/gradle/blob/master/subprojects/base-services/…
मोहम्मद

17

CentOS7 में विकास पैकेज tools.jar स्थापित करेगा। फ़ाइल java-1.8.0-openjdk में मौजूद नहीं है

sudo yum install java-1.8.0-openjdk-devel


धन्यवाद रिचर्ड! यह वास्तव में मेरी मदद की! मैं "रिएक्ट-देशी रन-एंड्रॉइड" चलाने में त्रुटि कर रहा था और त्रुटि प्राप्त कर रहा था: * क्या गलत हुआ: कार्य के लिए निष्पादन विफल रहा ': ऐप: compileDebugJavaWithJavac'। > उपकरण नहीं मिल सका। कृपया जांचें कि /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre में एक मान्य JDK इंस्टॉलेशन है। अब यह काम कर रहा है! एक बार फिर धन्यवाद!
मैथ्यूस गोंटिजो

धन्यवाद रिचर्ड..यह मेरे लिए भी काम किया। मूल रूप से यह एक JAVA_HOME पथ मुद्दा था, जिसने वांछित जावा jdk पथ में tools.jar को खोजने की कोशिश की।
rajdeepbs29

16

इसे इसमें जोड़ें gradle.properties:

org.gradle.java.home = C: \ Program Files \ Java \ jdk1.8.0_91


7
डबल बैक स्लैश का उपयोग करना न भूलें। उदाहरण के लिए org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ :।
कूलमाइंड

11

दो साल बहुत देर हो सकती है, लेकिन मैं हाल ही में एक ही समस्या में भाग गया और यह समाधान है जो मैंने इस पोस्ट को खोजने के बाद समाप्त किया :

import javax.tools.ToolProvider

dependencies {
  compile (
    files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
    ...
  }
}

यह काम करना चाहिए अगर java.home एक निर्देशिका की ओर इशारा करता है जो JDK निर्देशिका के तहत नहीं है और यहां तक ​​कि Mac OS पर भी जहां आपको tools.jar के बजाय classes.jar होगा।


विधि getURLs () अशक्त वस्तु पर आह्वान नहीं कर सकते
गुप्त

10

Centos 7 के साथ, मैंने पाया है कि केवल JDK के पास है tools.jar, जबकि JRE के पास नहीं है । मैंने Java 8 JRE ( yum install java-1.8.0-openjdk) स्थापित किया है , लेकिन JDK ( yum install java-1.8.0-openjdk-devel) नहीं।

बाद वाले को स्थापित करने से समस्या हल हो जाती है। इसके अलावा, सेट करने के लिए याद रखें JAVA_HOME


9

विंडोज़ 10 पर, मैं एक ही समस्या का सामना करता हूं और यह मैंने इस मुद्दे को कैसे तय किया;

  1. पहुंच Advance System Settings>Environment Variables>System Variables
  2. पथ का चयन करें डिफ़ॉल्ट को अधिलेखित करेंC:\ProgramData\Oracle\Java\javapath
  3. अपने स्वयं के jdk इंस्टॉलेशन के साथ जो JAVA_HOME = हैC:\Program Files\Java\jdk1.8.0_162

इस विंडोज के लिए स्वीकार किए जाते हैं जवाब होना चाहिए :) --thanks
Saher Ahwal

6

मेरे सिस्टम पर (विन 10, जेआरई 1.8.0, एंड्रॉइड स्टूडियो 3.1.2, ग्रैडल 4.1) tools.jarजेआरई निर्देशिका ( C:\Program Files\Java\jre1.8.0_171) में नहीं है।

हालाँकि, मैंने इसे पाया C:\Program Files\Android\Android Studio\jre\libऔर सेटिंग की कोशिश कीJAVA_HOME=C:\Program Files\Android\Android Studio\jre

ये मेरे लिए सही है)!


एक ही मुद्दा, यह मेरे लिए तय है, यह भी विन 10 / Android स्टूडियो। इसके अलावा, उपरोक्त समाधानों में से कोई भी वास्तव में एक "Tools.jar" डाउनलोड करने के लिए नहीं लगता है ... बस jre के साथ नहीं आता है)
एरिक एरोनिटी

मेरे लिए भी काम किया। मैंने प्रोजेक्ट रूट में एक gradle.properties बनायाorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

लिनक्स

नैनो या गेडिट/etc/environment जैसे किसी भी टेक्स्ट एडिटर में खोलें और निम्नलिखित पंक्ति जोड़ें:

JAVA_HOME="/usr/lib/jvm/open-jdk"

खिड़कियाँ

  1. सिस्टम कंट्रोल पैनल एप्लेट शुरू करें (स्टार्ट - सेटिंग्स - कंट्रोल पैनल - सिस्टम)।
  2. उन्नत टैब का चयन करें।
  3. पर्यावरण चर बटन पर क्लिक करें।
  4. सिस्टम वेरिएबल्स के तहत, बटन जोड़ें पर क्लिक करें, फिर निम्नलिखित पंक्तियों को पिछले करें:

    चर नाम में: JAVA_HOME

    परिवर्तनीय मूल्य में: C:\Program Files\Java\jdk1.x.x_xxx

    जहाँ x.x_xxxjdk संस्करण आप यहाँ से अपने jdk संस्करण प्राप्त कर सकते हैंC:\Program Files\Java

  5. सिस्टम वेरिएबल्स के तहत, पथ चुनें, फिर संपादित करें पर क्लिक करें, फिर नए बटन पर क्लिक करें और फिर निम्न पंक्ति को पिछले करें:

    %JAVA_HOME%/bin;


रास्ते थोड़े अलग हो सकते हैं। फेडोरा में इसने मेरे साथ काम कियाJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

यह मेरे लिए काम किया:

मुझे संदेश मिल रहा था

कार्य के लिए निष्पादन विफल रहा ': ऐप: compileDebugJavaWithJavac'।

उपकरण नहीं मिल सका। कृपया जांचें कि C: \ Program Files \ Java \ jre1.8.0_121 में JDK की एक वैध स्थापना है।

  • एंड्रॉइड स्टूडियो में, अपने एसडीके स्थान की जांच करें।
  • फ़ाइल, परियोजना संरचना, एसडीके स्थान, जेडीके स्थान।
  • उदाहरण: C: \ android-studio \ android-studio \ jre
  • C: \ android-studio \ android-studio \ jre \ lib फ़ोल्डर में C: \ Program Files \ Java \ jre1.8.0_121 \ lib फ़ोल्डर में Tools.jar फ़ाइल की प्रतिलिपि बनाएँ।
  • पुन: प्रयास करें।

3

यदि आप बनाने के लिए टर्मिनल का उपयोग करते हैं और आपके पास यह त्रुटि है, तो आप अपनी gradle.propertiesफाइल में एंड्रॉइड स्टूडियो के साथ बंडल किए गए jdk को इंगित कर सकते हैं :

org.gradle.java.home=/usr/local/android-studio/jre

2

अन्य उत्तर की तरह मैं सेट org.gradle.java.home में संपत्ति gradle.properties फ़ाइल। लेकिन \ विभाजकों के साथ पथ काम नहीं किया (विंडोज़ 10 पर निर्माण):

जावा होम की आपूर्ति 'org.gradle.java.home' के माध्यम से अमान्य है। अमान्य निर्देशिका: C: प्रोग्राम फ़ाइलेंजवाजदक 1.8.0_65

इसलिए इसके बजाय

org.gradle.java.home = C: \ Program Files \ Java \ jdk1.8.0_65

मुझे इस्तेमाल करना था

org.gradle.java.home = C: / प्रोग्राम फ़ाइलें / जावा / jdk1.8.0_65

तब बिल्ड सफल था

समस्या यह है कि परियोजना JDK के बजाय JRE के साथ निर्मित है और जब से मैं इसे बना रहा था ग्रहण से यह भी काम किया:

  • विंडो में> वरीयताएँ> ग्रेडल> तर्क कार्यक्षेत्र JRE को निर्दिष्ट करते हैं और आपके JDK को निर्दिष्ट करते हैं।
  • विंडो में प्राथमिकताएं> जावा> इंस्टॉल किए गए JRE आपके JDK को डिफ़ॉल्ट के रूप में निर्दिष्ट करते हैं

2

मेरे मामले में (Windows 10) जावा अपडेट के बाद मैंने अपने एनवायरमेंट वेरिएबल्स को खो दिया, इसलिए मैंने निश्चित रूप से वेरिएबल्स को फिर से जोड़ा, निम्न चरणों में आधारित https://confluence.atlassian.com/doc/setting-the-java_nome-variable-in -windows-8895.html


2

मैंने इस तरह से समस्या हल की:

  • http://www.java2s.com/Code/Jar/t/Downloadtools180.bm पर फ़ाइल टूल्स-1.8.0.jar डाउनलोड करें
  • अनज़िप फ़ाइल और टूल.जर का नाम बदलें
  • C: \ Program Files \ Java \ jre1.8.0_191 \ lib फ़ोल्डर में कॉपी करें
  • पुन: प्रयास करें

इसे कॉपी करना था C:\Program Files (x86)\Java\jre1.8.0_211औरC:\Program Files (x86)\Java\jre1.8.0_251
TessavWalstijn

1

क्या आपने सुनिश्चित किया है कि tools.jar ने इसे संकलन क्लास पथ पर बनाया है? शायद रास्ता गलत है।

task debug << {
    configurations.compile.each { println it }
}

हां, इसने इसे क्लास की राह बना दिया, लेकिन फिर भी यह मुद्दा बना रहा।
अभिषेक गुप्ता

1

"ओपन ग्रेड रन कॉन्फ़िगरेशन" में JAVA_HOME टैब के माध्यम से JDK पथ को जोड़ने से समस्या हल हो जाएगी।


0

मैंने अधिकांश शीर्ष विकल्पों की कोशिश की है, लेकिन ऐसा लगता है कि मेरे पास मेरे पर्यावरण सेटअप में कुछ गड़बड़ थी, इसलिए उन्होंने मदद नहीं की। क्या मेरे लिए समस्या हल हो जाती लिए किया गया था फिर से स्थापित jdk1.8.0_201 और jre1.8.0_201और यह मेरे लिए त्रुटि को हल किया। आशा है कि किसी की मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.