javac1.8 वर्ग नहीं मिला


80

मैंने दो jdks - jdk 1.5 और jdk 1.8 लगाए हैं। मेरे पास चींटी build.xml config फाइल है:

<target name="compileCustomSrc">
    <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5" >
        <classpath>
            <fileset dir="C:/lib/">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

Jdk1.8 को स्थापित करने से पहले, ग्रहण से चींटी को सभी स्रोतों को सफलतापूर्वक संकलित किया गया। लेकिन अब, मेरे पास त्रुटि संदेश है:

वर्ग नहीं मिला: javac1.8

मेरा JAVA_HOME और JRE_HOME:

JAVA_HOME = C: \ Program Files (x86) \ Java \ jdk1.5.0_16
JRE_HOME = C: \ Program Files (x86) \ Java \ jre1.5.0_16

और ग्रहण JRE में 1.5 पर सेट करें। स्थापना के दौरान जावा 1.8 कुछ विन्यास सेट करता है?

जवाबों:


173
वर्ग नहीं मिला: javac1.8

यह त्रुटि 1.9.0 से कम अपाचे चींटी संस्करणों के साथ होने के लिए जानी जाती है - जो कि जावा 8 के साथ संगत नहीं है। यदि आप चींटी <1.9.0 के संस्करण का उपयोग कर रहे हैं, तो आपको 1.9.x रिलीज पर अपडेट करना चाहिए।

यहाँ संबंधित बग रिपोर्ट है: https://issues.apache.org/bugzilla/show_bug.cgi?id=54747

Btw, यदि आप केवल जावा 8 के साथ संकलन करना चाहते हैं, लेकिन आपको किसी वास्तविक जावा 8 सिंटैक्स को संकलित करने की आवश्यकता नहीं है, तो आप निम्न तर्क को वर्कअराउंड के रूप में javac पास कर सकते हैं , जो आपको चींटी के पुराने संस्करण का उपयोग जारी रखने की अनुमति देगा :

-Dbuild.compiler=javac1.7

9
मैं इस मुद्दे में भाग गया, और दिए गए झंडे ( -Dbuild.compiler=javac1.7) काम करता है जब सीधे antसाथ ही पारित किया जाता है।
सिनकोडेनदा

क्रिस्टियन का उत्तर सही है, हम जोड़ सकते हैं -Dbuild.compiler = javac1.7 जब ग्रहण में एंटी-लॉन्च कॉन्फिगर जनरेट करते हैं तो देखें < Bugs.eclipse.org/bugs/show_bug.cgi?id=409808 >
शिव

5
मुझे कोड मिला । वे परीक्षण कर रहे हैं कि आप जावा 1.3 या नीचे का उपयोग कर रहे हैं या नहीं। एक दशक पहले से पुराना, पुराना कोड। इस वजह से, हर बार ओरेकल एक नया 1.x संस्करण के साथ बाहर आता है। चींटी को पहले से ही 1.4 या उच्चतर की आवश्यकता होती है। उन्हें इस चेक को कोड से हटा देना चाहिए।
डेविड डब्ल्यू।

3
@ डेविड डब्ल्यू - नर्क ने जावा 1.9 और 2.0 के लिए समर्थन क्यों नहीं जोड़ा इसलिए परिवर्तन अगले 6 या 8 वर्षों के लिए काम करते हैं। जावा 9 जल्द ही बाहर हो जाएगा, और सब कुछ फिर से टूटने वाला है ....
jww

2
2012 में ग्रहण की चींटी 1.9.0 के लिए बग को तय किया गया था लेकिन ग्रहण केपलर (2014!) में चींटी अभी भी 1.8.4 पर है और इसलिए यह समस्या अभी भी मौजूद है। क्या यह लूना में उन्नत है या हम अभी भी इंतजार कर रहे हैं? (मुझे लगता है कि ग्रहण की वेब साइट किसी भी तरह के उचित परिवर्तन पर नज़र रखने के लिए बेकार है और यह जानने के लिए कि कौन से प्लग में कौन से संस्करण रिलीज़ होते हैं, क्या यह कहीं भी है?)
स्टुअर्ट रॉसिटर

14

क्रिस्टियन होल्डहस के जवाब (सही के रूप में चिह्नित) के अनुवर्ती के रूप में, आप इसके बजाय चींटी javac कार्यcompiler पर विशेषता का उपयोग कर सकते हैं । सेटिंग दोनों पिछड़े (1.3 के रूप में पीछे) और आगे संगत होना चाहिए।compiler="modern"

यह जावा सिस्टम नाम की संपत्ति को सेट करने की आवश्यकता से बचा जाता है build.compiler। केवल कार्य compilerपर विशेषता को स्पष्ट रूप से सेट करने की अनुपस्थिति में javac, चींटी build.compilerएक कमबैक के मूल्य का उपयोग करेगा ।


मैंने निश्चित रूप से क्रिस्टियन होल्डस के उत्तर को उखाड़ फेंका। हालाँकि, मैंने इसे अपनी स्थिति के लिए एक बेहतर समाधान पाया। कॉल करने के लिए मजबूर करने के लिए -D परम जोड़ने के लिए, हम बाहरी उपयोगकर्ताओं के लिए build.xml जहाज करने के लिए मुश्किल बना रहे हैं। हमें अतिरिक्त उपयोग के निर्देश भी देने की आवश्यकता है, जो हमेशा बेहतर होते हैं :)
राकेश एन

इसके काम करते समय, नोट्स बनाते समय [javac] warning: C:\Program Files\Java\jre1.8.0_152\lib\rt.jar(java/net/ConnectException.class): major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded.आदि
aswzen

7

मेरा भी यही मुद्दा था। मेरे पास JAVA_HOME और JRE_HOME सेट सही थे। मेरे पास चींटी> 1.9 भी थी।

जो मैंने इसे ठीक करने के लिए किया वह ग्रहण में खिड़की -> वरीयताओं में है। चींटी का विस्तार करें और रनटाइम चुनें। डिफ़ॉल्ट रूप से क्लासपैथ टैब का चयन किया जाना चाहिए और दाहिने हाथ पर "एंट होम" नामक एक बटन है। इस बटन पर क्लिक करें और अपने चींटी फ़ोल्डर की ओर इशारा करते हुए इसे दोबारा जांचें।


3
JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

आपका JAVA_HOME और JRE_HOME Java 1.5 इंस्टॉलेशन के लिए सेट हैं इसलिए 1.8 बायनेरिज़ (जैसे javac) नहीं पाए जाते हैं। उन्हें जावा 1.8 इंस्टालेशन पर सेट करें और आपको ठीक होना चाहिए।


लेकिन मैं jdk1.8 का उपयोग नहीं करना चाहता। चींटी इस सेटिंग्स के साथ 1.8 संकलक का उपयोग करने की कोशिश क्यों करती है?
kamilz

1
चींटी निर्माण को "रन अस"> "एंट बिल्ड ..." के साथ चलाएँ। फिर "JRE" टैब खोलें और उस "रनटाइम JRE" का चयन करें जिसे आप स्क्रिप्ट चलाने के लिए उपयोग करना चाहते हैं।
टोनी टोनी चॉपर

"Javac" कार्य पुराने vms के लिए बाइट कोड उत्पन्न कर सकता है, डोको में "लक्ष्य" विशेषता देखें: ant.apache.org/manual/Tasks/javac.html Java 1.5 बाद के VMs के लिए बाइटकोड उत्पन्न नहीं कर सकता है।
मार्क ओ'कॉनर

2

मैंने इसे Eclise के साथ आजमाया और एक ही त्रुटि हुई कक्षा को नहीं मिला: javac1.8

मैंने अपने सिस्टम पर ANT संस्करण को सत्यापित किया

> एंटवर्सन

Apache Ant (TM) संस्करण 1.9.6 29 जून 2015 को संकलित किया गया

जब मैंने कमांड प्रॉम्प्ट से build.xml चलाने की कोशिश की, तो यह काम कर गया। तब मैंने जाँच की कि ग्रहण में, यह ANT के पुराने संस्करण की बात कर रहा था।

मैंने बस ग्रहण में ANT HOME पथ को संपादित किया और यहाँ से भी काम किया। :)

नीचे वह छवि है जहां से ग्रहण में ANT पथ को संपादित करने की आवश्यकता है।

  1. Build.xml फ़ाइल पर राइट क्लिक करें
  2. ऐसे दोड़ो
  3. बाहरी उपकरण विन्यास
  4. Classpath टैब का चयन करें

अब यहां से ANT होम पथ को बदलें।

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


आपने ANT होम पथ को क्या बदल दिया?
इगोरगानपोलस्की 13

1
हाय @IgorGanapolsky पहले चींटी संस्करण पथ चींटी 1.8 के लिए था जिसे मैंने नवीनतम चींटी संस्करण 1.9 में अद्यतन किया जैसा कि ऊपर की छवि में दिखाया गया है। और इसने काम किया। आशा है कि मैंने आपके प्रश्न का उत्तर दिया।
कुलदीप

1

चींटी संस्करणों कम था 1.9 के साथ असंगत के रूप में जावा 8 के रूप में चींटी को 1.9.x रिलीज के लिए अपडेट करें


0

मैंने अन्य सभी समाधानों की कोशिश की, लेकिन कोई भी काम नहीं किया। मुझे अंततः एक दृष्टिकोण मिला जो मेरे लिए ग्रहण में काम आया:

  • antविंडो में "टास्क संकलन" जैसे चींटी कार्य नाम पर राइट क्लिक करें ।
  • चुनें Run As | External Tool Configurations
  • फिर JREटैब पर, Separate JRE: Java SE7अपने जावा 7 को चुनें या जो भी नाम दें, फिर हिट करें Applyऔर फिर Run

आपका चींटी कार्य निष्पादित किया जाएगा, और सही ढंग से निर्माण करेगा!


0

चींटी संस्करणों के साथ असंगत में जावा 8 के रूप में 1.9.x रिलीज के लिए अद्यतन करें। 1.9 संस्करण के साथ असंगत है या कॉमन पुट के बाद -Dbuild.compiler = javac1.7, नीचे देखें:

ant release -Dbuild.compiler = javac1.7


0

आप अपने सिस्टम पर ANT 1.10 को डाउनलोड और अनज़िप कर सकते हैं और अपनी परियोजना के लिए ग्रहण में ANT घर को 1.10 पर chnage करने का प्रयास कर सकते हैं। यह काम करना चाहिए, अधिक विवरण के लिए इसे पढ़ें। http://devops-badal.blogspot.com/2017/02/class-not-found-javac18-issue-b.html


0

कभी-कभी ANT के माध्यम से युद्ध का निर्माण करते समय समस्या बिल्ड में जावा संस्करण के मिस मैच से संबंधित होती है। build.properties फ़ाइलों के रूप में build.XML build.compiler संपत्ति में उल्लिखित जावा संस्करण का उपयोग करने की कोशिश करती है

चेक करें कि build.compiler संपत्ति जावा संस्करण के रूप में ही है।


0

आप ग्रहण का एक नया संस्करण डाउनलोड कर सकते हैं, जिसमें प्लगइन्स निर्देशिका में चींटी का एक नया संस्करण शामिल है। फिर, पुराने जार के प्लगइन निर्देशिका में चींटी जार को कॉपी करें। ग्रहण स्वचालित रूप से चींटी के नए संस्करण की ओर इशारा करेगा। इसने मेरे लिए नए मार्स 2 के साथ पुराने केपलर के लिए काम किया।


0

मुझे भी यही समस्या थी। और मैं एक संपत्ति सेट करके build.xml के भीतर इसे हल करने में सक्षम था।

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