गुम कलाकृतियाँ com.sun: उपकरण: जार


91

मैं शुरू हो रही ट्यूटोरियल का पालन कर रहा हूं, लेकिन मैं मावेन का उपयोग करके प्लेन प्रोजेक्ट को आयात करने के बाद फंस गया हूं। मैं 64bit विंडोज 7 पर चलने वाले ग्रहण इंडिगो का उपयोग कर रहा हूं।

सभी आयातित परियोजनाओं में एक ही त्रुटि है:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

मैंने कोशिश की मंचों की खोज करने के कुछ घंटों के बाद:

नवीनतम जावा 1.6.029 का अधिष्ठापन मेरे JAVA_HOMEपर्यावरण चर को \program files\Java\jdk1.6_029 बदलने के लिए मेरे ग्रहण जावा वरीयताओं को बदलने के लिए जेआरई का उपयोग करने के लिए इंगित करें jdk1.6_029

मैं वास्तव में प्लेन के साथ प्रयोग करना चाहूंगा, लेकिन कुछ पोस्ट क्यों हैं जो मैं समाधान पर एक कॉन्सनस उत्तर नहीं ढूंढ सकता हूं। कुछ लोग कहते हैं कि सूर्य ने 64 बिट जेडी से कुछ हटा दिया है, दूसरों का कहना है कि आपको अपनी एक्सएमएल फ़ाइलों को संपादित करना होगा, कई लोगों ने कहा है कि आपने अपना परिवर्तन किया है JAVA_HOME, और दूसरे ने कहा कि आपको ग्रहण के लिए अपने वीएम विकल्पों को बदलना होगा।

इसे साफ करने में किसी भी मदद की सराहना की जाएगी, और संभवतः कई लोगों के लिए उपयोगी होगी, क्योंकि मेरे पास यहां विशेष रूप से अजीब सेटअप नहीं है।

(संपादित करें) यहाँ पहली परियोजना में pom.xml है। ग्रहण झंडे में त्रुटि जो कहती है:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.googlecode.playn</groupId>
    <artifactId>playn-project</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <artifactId>playn-android</artifactId>
  <name>PlayN Android</name>
  <packaging>jar</packaging>

  <repositories>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- needed because Android uses the same JSON code as playn-java;
         that should be factored into a library shared by both backends -->
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-java</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>${android.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
  </build>
</project>

क्या आपको कमांड-लाइन से मावेन चलाने में समान त्रुटि मिलती है?
रघुराम

मैंने pom.xml फ़ाइल जोड़ी। मैं कमांड लाइन का उपयोग करके मावेन के साथ कुछ भी नहीं करने के लिए माफी चाहता हूं।
बोल्ड कॉन्वेंटशन 16

पोम टूट गया है। अनिवार्य टैग जैसे ग्रुप आईड, आर्टिस्टिक आईड, वर्जन ... पेरेंट पोम भी मॉड्यूल संस्करण है जो मावेन केंद्रीय में मौजूद नहीं है ....
मार्क ओ'कॉनर

क्या आपने इसे किसी तरह ठीक किया? इसमें से कोई भी मेरे लिए काम नहीं करता है (Windows7-64 बिट - jdk1.6)
Ovidiu Latcu

जैसा कि यह एक सामान्य मुद्दा है, क्या आप एक जवाब स्वीकार कर सकते हैं जो आपके लिए काम करता है?
रॉय Truelove

जवाबों:


56

मैंने बस इसी प्रश्न के बारे में इस सवाल पर पोस्ट किया कि मैंने इसे कैसे हल किया, लेकिन मैं इसे (और विस्तार) यहां भी पेस्ट कर दूंगा, क्योंकि यह अधिक प्रासंगिक लगता है।

विंडोज 7 में ग्रहण का उपयोग करते समय मेरे पास एक ही मुद्दा था, यहां तक ​​कि जब मैंने ग्रहण सेटिंग्स में जेआरई की सूची से जेआरई को हटा दिया और बस वहां जेडडीके था।

मैंने जो कुछ किया है (जैसा कि आपने अपने प्रश्न में उल्लेख किया है) उस शॉर्टकट के लिए कमांड लाइन को संशोधित किया गया था जिसका उपयोग मैं ग्रहण करने के लिए -vm तर्क को इस तरह जोड़ने के लिए करता हूं:

-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

बेशक, आप अपने JDK स्थापित की बिन निर्देशिका को इंगित करने के लिए समायोजित करेंगे । यह क्या करता है, इसका कारण ग्रहण स्वयं JRE के बजाय JDK का उपयोग करना है, और फिर यह tools.jarठीक से पता लगाने में सक्षम है ।

मेरा मानना ​​है कि यह इस बात से है कि जब कोई निर्दिष्ट नहीं होता है तो ग्रहण अपने डिफ़ॉल्ट JRE को कैसे देखता है। मैं अनुमान लगा रहा हूं कि यह JDK (क्यों, मुझे नहीं पता) पर JRE को प्राथमिकता देता है और इसे खोजने वाले पहले संगत JRE के लिए जाता है। और अगर यह विंडोज रजिस्ट्री कुंजी से दूर जा रहा है जैसे कि व्लादिअट्र के जवाब से पता चलता है, तो यह HKLM\Software\JavaSoft\Java Runtime Environmentकुंजी के बजाय पहले HKLM\Software\JavaSoft\Java Development Kitकुंजी की तलाश करता है।


10
यह विंडोज 7 में हमारे लिए काम करता है। हमें eclipse.ini का उपयोग करने के बजाय -vm "..." तर्क जोड़ने के लिए शॉर्टकट को संशोधित करना पड़ा। साथ ही, त्रुटि दूर होने से पहले हमें अपने मावेन प्रोजेक्ट को कार्यक्षेत्र में फिर से आयात करना होगा।
किट मेन्के

2
यहाँ भी - .ini के साथ कोई पासा नहीं है, लेकिन cmdline में -vm arg ने काम किया।
रॉय Truelove

1
मैंने eclipse.init को बदलने का तरीका बताने के लिए उत्तर को संपादित किया। स्रोत: wiki.eclipse.org/Eclipse.ini#-vm_value:_Windows_Example
OGrandeDiEnne

1
यहाँ एक ही - शॉर्टकट के लिए -m जोड़ने मेरे लिए काम किया है। मुझे अपनी परियोजना को पुनः प्राप्त नहीं करना है, यह प्रोजेक्ट / मावेन / अपडेट करने के लिए पर्याप्त है।
Łukasz Dumiszewski

1
इसे काम करने देने के लिए, मुझे javaw.exeउस पथ को जोड़ने की आवश्यकता है (इसलिए पूर्ण रूप से -vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe");
जैकब वैन लिंगन

27

एक साधारण, वेब सेवा एप्लिकेशन को विकसित करते समय मुझे एक ही परेशानी थी, मेरे मामले में मुझे जक्स लाइब्रेरी प्राप्त करने के लिए एक कोडश प्लग जोड़ना पड़ा। हालाँकि, मावेन पोम उपकरण जार फ़ाइल के बारे में पूछते रहे।

मुझे कहना है कि उपरोक्त टिप्पणियां सही हैं, आप नीचे दी गई प्रविष्टि को pom फ़ाइल में शामिल कर सकते हैं:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>

लेकिन, तब क्या होगा जब आपको प्रोडक्शन इंस्टेंस पर तैनात होना पड़ेगा? आप सिस्टम परिवेश चर के संदर्भ के साथ पथ को बदल सकते हैं लेकिन यह अभी भी अच्छा नहीं है, कम से कम मेरे लिए।

मुझे StackOverflow टिप्पणी में एक और समाधान मिला:

मावेन 3 कलाकारी की समस्या

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>${struts2.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.sun</groupId>
        </exclusion>
    </exclusions>
</dependency>

वे सुझाव देते हैं कि उपकरण जार के लिए एक बहिष्करण कथन शामिल है और यह काम करता है। इसलिए संक्षेप: आप अपनी निर्भरता के भीतर एक बहिष्करण नियम को शामिल कर सकते हैं और टूल.जर समस्या से बच सकते हैं:

 <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>

3
संकेत: अपने बहिष्करण को सम्मिलित करने के लिए 'mvan निर्भरता: ट्री' का उपयोग करें।
लार्स

pom.xmlमेरे लिए काम नहीं करने वाले बहिष्करण टैग जोड़ना
user3437460

25

मैं उसी समस्या में भाग गया और जिस तरह से मैं इसे हल करने में सक्षम था, उसमें निर्भरता का स्थान जोड़ tools.jarदिया गया pom.xml। इस तरह:

 <dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>

सुनिश्चित करें कि आप <systemPath>कभी भी बदल सकते हैं जहाँ पर आपके tools.jar फ़ाइल स्थित है।


42
मैं अत्यधिक यह नहीं करने का सुझाव देता हूं - यह समस्या को हल करता है लेकिन अन्य डेवलपर्स के लिए पोर्टेबल नहीं है या वातावरण का निर्माण नहीं करता है। अन्य उत्तरों को देखें, तो उन्हें लगता है कि ट्रिक
रॉय ट्रूवेल

शायद यह बेहतर है कि सिस्टमपैथ को बदलकर <systemPath> $ {java.home} /lib/plugin.jar </ systemPath>
Guilherme Santos

stackoverflow.com/questions/3080437/… इसे पोर्टेबल तरीके से कैसे करना है।
वोरबर्गर

मैं अपने pom.xml को इस तरह से बदल देता हूं (java-md-doclet का नया संस्करण लागू करें) त्रुटि गायब हो जाती है: <निर्भरता प्रबंधन> <निर्भरता> <निर्भरता> <groupId> com.github। md-doclet </ विरूपण साक्ष्य> <संस्करण> 2.1.3 </ संस्करण> </ निर्भरता> </ निर्भरता> </ निर्भरता प्रबंधन>
समीर 007

20

अन्य किसी भी उत्तर ने मेरे लिए ऐसा नहीं किया। ग्रहण में pom.xml की "निर्भरता पदानुक्रम" के लिए क्या जांचना था, जहां एक फिल्टर 'उपकरण' देने से पता चला कि मुझे tools.jar के लिए एक वास्तविक निर्भरता थी:

ग्रहण दृश्य

तो मेरे लिए अपराधी यह था:

<dependency>
    <groupId>com.github.markusbernhardt</groupId>
    <artifactId>robotframework-selenium2library-java</artifactId>
    <version>1.4.0.7</version>
    <scope>test</scope>
</dependency>

बहिष्करण को जोड़ने से यह निश्चित हो जाता है:

<dependency>
    <groupId>com.github.markusbernhardt</groupId>
    <artifactId>robotframework-selenium2library-java</artifactId>
    <version>1.4.0.7</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.sun</groupId>
        </exclusion>
    </exclusions>  
</dependency>

अपवर्जन के लिए इसमें कोई कमी नहीं है।


1
मेरे लिए काम किया, जारी करने के लिए एक जावा 6 कोडबेस उन्नयन जावा 8
jasonoriordan

मैंने अपने अपराधी के रूप में स्पॉटबग्स-मावेन-प्लगइन की पहचान की है, धन्यवाद!
टाइमब्रु

8

मेरे और विंडोज 7 के साथ एक ही। मैंने दो पंक्तियों को जोड़कर समाप्त किया eclipse.ini:

-vm 
C:\Program Files\Java\jdk1.6.0_35\bin

मैंने %JAVA_HOME%वहां इस्तेमाल करने की कोशिश की , लेकिन बात नहीं बनी।


2
मुझे भविष्य के लिए ध्यान दें: यह -vmargsलाइन से पहले होना चाहिए , क्योंकि वीएम स्टार्टअप आर्ग्स के रूप में किसी भी अतीत की व्याख्या की जाएगी। So: ठीक है कि एक से पहले!
ईस

इस समाधान का उपयोग करने -vmसे पहले -vmargsकुंजी है !. धन्यवाद!
टेबर

6

मैंने ग्रहण 4.3 सेटिंग्स में इस समस्या को हल किया - केवल JDK पुस्तकालयों को JRE के पुस्तकालयों में जोड़कर।

विंडोज़ पर जाएँ -> सेटिंग्स -> जावा -> स्थापित JREs -> JDK का चयन करें और संपादित करें पर क्लिक करें -> बाहरी JARs जोड़ें और टूल जोड़ें। (JDK / lib में रखा गया)


5

अपनी मशीन पर JDK संस्करण की जाँच करें और pom.xmlदोनों में समान होना चाहिए

<dependency>
    <groupId>sun.jdk</groupId>
    <artifactId>tools</artifactId>
    <version>1.8</version>
    <scope>system</scope>
    <systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath>
</dependency>

4

यदि यह समस्या अभी भी होती है, तो यह संस्करण के JDK के बराबर या 11 से अधिक होने के कारण हो सकता है।

tools.jarसंग्रह उन JDK के दशक में lib फ़ोल्डर से हटा दिया गया है (देखें इस सवाल का जवाब एक समान प्रश्न के लिए)। उस स्थिति में, पुस्तकालयों के अन्य संस्करणों का उपयोग करने का प्रयास करें, जो कि com.sun:toolsपुस्तकालय पर निर्भर न हों ।


3

थोड़ी देर तक संघर्ष करने के बाद आखिरकार मुझे eclipse.iniकमांड लाइन के बजाय काम करने के लिए मिला । अंत में प्रलेखन पढ़ने के बाद मैंने महसूस किया कि -vm तर्क एक अलग लाइन पर होना चाहिए, अछूता और किसी भी -vmargs से आगे:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

2

मुझे भी ऐसी ही त्रुटि मिली। ऐसा इसलिए है क्योंकि ग्रहण में जेडीके ठीक से सेट नहीं है। खीरे को JRE के साथ-साथ JDK की आवश्यकता होती है, इसलिए अपने pom.xml में निर्भरता नीचे जोड़ें

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <version>1.6</version>
  <scope>system</scope>
  <systemPath>C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar</systemPath>
</dependency>

1

पोम फ़ाइलों के प्रभावी पोम टैब में, मुझे निम्न व्युत्पन्न पथ दिखाई देता है: C:\Program Files\Java\jre6/../lib/tools.jarऔर मुझे लगता है कि यह विंडोज में एक मान्य पथ नहीं है। मैंने jre6 / lib फ़ोल्डर के साथ-साथ सफलता के बिना Java / lib में tools.jar को कॉपी करने की कोशिश की।

मान "C: \ Program Files \ Java \ jre6" रजिस्ट्री से आता है

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_30
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6

और जहाँ आपके jdk JRE स्थापित है, वहाँ JavaHome कुंजी सेट करें। तब कंपाइलर की सभी त्रुटियां दूर हो गईं।

JDK को पुनर्स्थापित करने से इसे ठीक नहीं किया गया। JAVA_HOME या java.home सिस्टम वातावरण चर सेट करने से मदद नहीं मिली।

मैंने जो दूसरा विकल्प देखा है, वह प्रत्येक pom xml फ़ाइल में सही पथ के साथ निर्भरता को जोड़ रहा है, लेकिन playn-नमूनों में बहुत सारी फाइलें हैं जिन्हें संपादित करना एक हास्यास्पद दर्द है।

यह प्रभावी पोम परिणाम है, जो गलत रास्ता दिखाता है!

 <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6</version>
      <scope>system</scope>
      <systemPath>C:\Program Files\Java\jre6/../lib/tools.jar</systemPath>
      <optional>true</optional>
    </dependency>

1

इस भरोसेमंद को pom.xml फ़ाइल में जोड़ें। उममीद है कि इससे मदद मिलेगी।
में <systemPath>संपत्ति आप अपने JDK lib पथ लिखने के लिए है ..

    <dependency>  
          <groupId>com.sun</groupId> 
           <artifactId>tools</artifactId>
        <version>1.4.2</version>
        <scope>system</scope>
        <systemPath>C:/Program Files/Java/jdk1.6.0_30/lib/tools.jar</systemPath>
        </dependency> 

1

Eclipse.ini फिक्स का उपयोग करके समाप्त हुआ:

openFile
-vm (Your Java Home JDK here)

उदाहरण के लिए, -vm C:\Java\JDK\1.6

JRE को JDK में भी बदलना था:

ग्रहण आईडीई में जाएं:

  1. विंडो -> प्राथमिकताएं -> स्थापित JREs
  2. जोड़ें पर क्लिक करें (नए JRE का पता लगाने के लिए)
  3. मानक JVM -> अगला चुनें
  4. JRE घर का पता लगाने के लिए निर्देशिका पर क्लिक करें, JDK_INSTALL_LOCATION डालें और समाप्त करें।
  5. अपने जावा प्रोजेक्ट के गुणों पर जाएँ -> जावा बिल्ड पाथ -> लाइब्रेरीज़ -> जेआरई -> सेलेक्ट करें -> वर्कस्पेस डिफ़ॉल्ट JRE -> फिनिश चुनें
  6. प्रोजेक्ट के साथ पूर्ण कार्यक्षेत्र क्लीनअप करें -> क्लीन।

ग्रहण आईडीई के हमारे सभी विंडोज उदाहरणों में यह मुद्दा है। सभी उबंटू आधारित ग्रहण आईडीई हमारे लिए प्रभावित नहीं हैं। इसलिए, हमने विंडोज इंस्टेंस पर इस पद्धति का उपयोग किया और यह हमारे मुद्दों को ठीक करता है। बाद में लाइन ब्रेक जोड़ना सुनिश्चित करें -vm, जावा एसडीके पथ को अमृत रेखा पर रखें, और फ़ाइल में सभी नए जोड़े गए -vmध्वज --vmargsको रखें eclipse.ini
tom_mai78101

1

जैसा कि अन्य पोस्टरों ने कहा है कि इस मुद्दे को JRE के साथ करना है कि ग्रहण का उपयोग टूल जार को खोजने में सक्षम नहीं है। मैंने ऊपर बताई गई बातों की तुलना में थोड़ा अलग दिशा में जाकर इस मुद्दे को हल किया, और यह मेरी परियोजनाओं और पर्यावरण के तरीके के कारण था।

ग्रहण 4.5 को रनटाइम के लिए कम से कम जावा 7 की आवश्यकता होती है, इसलिए मैंने अपने सिस्टम सेटअप को C: \ java \ jre1.8.0_45 पर स्थित Java 8 JRE का उपयोग करने के लिए प्राप्त किया है।

आगे, मैं एक POM फ़ाइल का उपयोग कर रहा हूं जो मानता है कि मैं जावा 6 JDK के साथ चल रहा हूं।

  <profiles>
    <profile>
      <id>default-profile</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <properties>
        <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>osx_profile</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
      </properties>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6.0</version>
      <scope>system</scope>
      <systemPath>${toolsjar}</systemPath>
    </dependency>
  </dependencies>

मुझे POM फ़ाइल को बदलने की अनुमति नहीं है, इसलिए मुझे कुछ जिगरी पॉकरी करनी थी। मैंने अपने Java 6 JDK से tools.jar को कॉपी किया, निर्देशिका C: \ java \ lib बनाया और इसे वहां चिपकाया। मैंने तब ग्रहण को फिर से शुरू किया और अपनी परियोजना को साफ किया। और VOILA त्रुटियां दूर हो गई हैं।

यह एक सुरुचिपूर्ण समाधान नहीं है, और मुझे लगता है कि POM सेटअप करने के तरीके को बदलने के लिए उचित समाधान होगा, लेकिन जैसा कि मैं करने में सक्षम नहीं था, यह काम करता है।


0

मुझे विंडोज 7 और एक्लिप्स 3.7 पर भी यही समस्या थी। मैंने इसे शुरू करके इसे ठीक किया

eclipse.exe -vm "D: \ JDK6 \ bin"

आप एक cmd शुरू कर सकते हैं और उस तरह से ग्रहण शुरू कर सकते हैं, या आप "शॉर्टकट" जोड़ सकते हैं और "लक्ष्य खंड" में एक तर्क के रूप में "D: \ JDK6 \ bin" जोड़ सकते हैं।

एक संदेश के रूप में, मैंने eclipse.ini में "D: \ JDK6 \ bin" जोड़ने की कोशिश की, लेकिन काम नहीं किया। और JRE6 को जोड़ने से काम नहीं चलेगा क्योंकि इसमें tools.jar नहीं है, यह "lib" डायरेक्टरी है। केवल JDK करता है।


0

उपरोक्त सभी को आज़माने के बाद भी मुझे वही समस्या हो रही थी।

  • पथ पर्यावरण चर JDK 1.7 \ bin को इंगित करता है
  • मेरा JAVA_HOME पर्यावरण चर JDK 1.7 को इंगित किया गया था
  • मेरे eclipse.ini में JDK 1.7 की ओर इशारा करते हुए jav -vm प्रविष्टि थी
  • मेरी ग्रहण वरीयता में JDK 1.7 स्थापित JRE था।
  • मेरा प्रोजेक्ट बिल्ड पथ JDK 1.7 का उपयोग कर रहा था।

फिर मैंने निम्नलिखित कोशिश की,

  • एक कमांड प्रॉम्प्ट खोलें और java -version टाइप करें। इसने मुझे JRE संस्करण 1.8 दिखाया।

  • कमांड प्रॉम्प्ट खोलें और JDK 1.7 बिन निर्देशिका और टाइप किए गए जावा-लोवर्स के स्थान पर गए। इस बार यह सही ढंग से 1.7 दिखा।

फिर कुछ स्थानों पर खुदाई करने के बाद मैंने पाया कि उपरोक्त स्थानों के अलावा जावा रनटाइम के लिए अतिरिक्त स्थान हैं।

रजिस्ट्री

एक रजिस्ट्री कुंजी भी है जहाँ JRE स्थान के अंतर्गत निर्दिष्ट किया गया है

HKLM \ Software \ Javasoft \ संस्करण

मैंने JDK 1.7 को इंगित करने के लिए प्रविष्टियों को यहां बदल दिया है

प्रोग्राम डेटा

निर्देशिका "C: \ ProgramData \ Oracle \ Java \ javapath" पथ पर्यावरण चर में मौजूद है और इसमें जावा, जावा आदि शॉर्टकट हैं ... इन शॉर्टकट के लिए लक्ष्य सभी JRE 1.8 थे। ( यह मुझे लगता है कि मुख्य समस्या थी ) मैंने सही JDK exe की ओर इशारा करने के लिए शॉर्टकट बदल दिए।

एक बार यह सब हो गया। मैंने सभी jdk.tools pom.xml त्रुटियों को गायब कर दिया ग्रहण खोला।


0

मुझे यह समस्या आई और यह पता चला कि विंडोज पर JBossDevStudio 9.1 एक 32-बिट प्रोग्राम है। ग्रहण, और इस प्रकार JBossDevStudio, JVM के गलत प्रकार के साथ काम नहीं करता है। 64-बिट ग्रहण को 64-बिट JVM की आवश्यकता है, 32-बिट ग्रहण को 32-बिट JVM की आवश्यकता है। इस प्रकार मेरे स्थापित 64-बिट JDK के साथ चलने के लिए ग्रहण को कॉन्फ़िगर करने से काम नहीं चला।

एक 32 बिट JDK को स्थापित करना और उस से ग्रहण को चलाने से समस्या हल हो गई।

कम से कम मेरी एक परियोजना के लिए, एक अन्य जहां मैंने ग्रहण परियोजना संपत्तियों में एक रनटाइम JDK को कॉन्फ़िगर करने की कोशिश की थी, अभी भी टूटी हुई है।


0

मैंने अपने सिस्टम से JRE की स्थापना रद्द करके और केवल JDK को छोड़कर समस्या का हल किया। JDK को पुनर्स्थापित करना पर्याप्त नहीं है क्योंकि Oracle JDK इंस्टॉलर JDK और JRE दोनों को स्थापित करता है

BTW, यह मुझे लगता है कि यह बग मुसीबतों के लिए जिम्मेदार है: java.home ग्रहण JRE का उपयोग बिल्ड JRE के बजाय किया जाता है


0

मेरे मामले में, मैं ग्रहण रन कॉन्फ़िगरेशन से मेवेन बिल्ड को निष्पादित कर रहा था। JDK स्थापना फ़ोल्डर को इंगित करने के लिए डिफ़ॉल्ट JRE कॉन्फ़िगरेशन बदलने के बाद भी, समस्या मेरे लिए ठीक नहीं हुई। कारण यह है कि मावेन बिल्ड में एक जेआरई टैब है - रन कॉन्फ़िगरेशन (नीचे दी गई छवि देखें)। और यह अभी भी मेरे जेआरई इंस्टॉलेशन की ओर इशारा कर रहा था। मैंने इसे JDK इंस्टालेशन की ओर इशारा किया और फिर Maven Build को चलाया। इस बार, यह काम किया। यहाँ छवि विवरण दर्ज करें


0

आइए समझते हैं कि यह मुद्दा क्यों हुआ:

$ मवन -विरोध

Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T20: 00: 29 + 01: 00) Menen घर: C: \ Program Files \ Apache \-3.6.1 Java संस्करण: 1.8.0_221, विक्रेता। रनटाइम: C: \ Program Files \ Java \ jre1.8.0_221 डिफ़ॉल्ट लोकेल: en_GB, प्लेटफ़ॉर्म एन्कोडिंग: Cp1252 OS नाम: "विंडोज़ 10", संस्करण: "10.0", आर्क: "amd64", परिवार, "विंडोज़"

Maven "mvan -version" कमांड आउटपुट के ऊपर देता है।

यदि आप JAVA_HOME पर्यावरण चर निर्दिष्ट नहीं करते हैं तो हम देख सकते हैं कि मावेन को जावा रनटाइम पथ "C: \ Program Files \ Java \ jre1.8.0_221" मिलता है। और फिर मावेन इस रास्ते को JAVA_HOME मानता है। इसीलिए जब एप्लिकेशन को कमांड प्रॉम्प्ट या किसी IDE से बनाया जाता है, तो maven "% JAVA_HOME% .. \ lib \ tools.jar" पथ में tools.jar फ़ाइल की तलाश करता है।

tools.jar JDK पथ में मौजूद है, इसलिए हमें इसका उपयोग करने से पहले मावेन के लिए इसका उल्लेख करना होगा। अब एक दिन पहले से ही उपलब्ध jre के साथ मशीनों का निर्माण किया जाता है, लेकिन jdk केवल विकास के लिए आवश्यक है। यही कारण है कि मावेन jre पथ स्वचालित रूप से चुनता है।

अधिक सहायता के लिए, कृपया maven स्थापना पथ में उपलब्ध कोड mvn.cmd पढ़ें।


0

समस्या है प्रणाली फ़ाइल tools.jar को खोजने में सक्षम नहीं है

इसलिए पहले चेक करें कि फाइल डायरेक्टरी के JDK इंस्टॉलेशन में है या नहीं।

यहाँ छवि विवरण दर्ज करें

POM.xml में नीचे प्रविष्टि करें जैसा कि दूसरों ने ठीक कहा है

<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_241\lib\tools.jar</systemPath>
</dependency> 

फिर समस्या को दूर करने के लिए नीचे दिए गए चरणों का भी पालन करें

1) अपने प्रोजेक्ट पर राइट क्लिक करें

2) बिल्ड पाथ पर क्लिक करें

नीचे की छवि के अनुसार, कार्यक्षेत्र डिफ़ॉल्ट JRE का चयन करें और खत्म पर क्लिक करें।

यहाँ छवि विवरण दर्ज करें


0

'प्राथमिकताएं -> जावा -> स्थापित जेआरई' के तहत जेडीके घर में 'इंस्टॉल किए गए जेआरई' को बदलना मेरे लिए काम करता है।

FYI करें - JDK 1.8 का उपयोग कर रहा हूँ।


-1

यदि आप ओपनजेडक का उपयोग कर रहे हैं तो आपको ओपनजेडक -6-एसडीके पैकेज स्थापित करने की आवश्यकता है।


-1

मेरे लिए काम ${java.home}/../lib/tools.jarके निरपेक्ष पथ के सापेक्ष स्थान को बदलना C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar

आपको इसे केवल में बदलना होगा playn/pom.xml

अब प्लेन-सैंपल के लिए, व्लादिएटर सही है, यह बहुत अधिक पोम फाइलें बदलने के लिए है।

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