java - चींटी चेतावनी:"'interantruntime' सेट नहीं किया गया था"




build javac build-tools (7)

चींटी रनटाइम

बस includeantruntime="false" सेट करें:

<javac includeantruntime="false" ...>...</javac>

यदि आपको कई बार javac -task का उपयोग करना है, तो आप अपने स्वयं के PreSetDef को परिभाषित करने के लिए PreSetDef का उपयोग करने पर विचार करना चाहेंगे जो हमेशा includeantruntime="false" सेट करता है।

अतिरिक्त जानकारिया

http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :

यह चींटी 1.8 में पेश किए गए एक गलतफहमी के कारण होता है। बस उस नाम की एक विशेषता को जावैक कार्य में जोड़ें, इसे गलत पर सेट करें, और इसे कभी भी भूल जाएं।

http://ant.apache.org/manual/Tasks/javac.html :

क्लासपाथ में चींटी रन-टाइम पुस्तकालयों को शामिल करना है या नहीं; हाँ के लिए डिफ़ॉल्ट, जब तक build.sysclasspath सेट नहीं है। आमतौर पर इसे गलत पर सेट करना सबसे अच्छा होता है, इसलिए स्क्रिप्ट का व्यवहार पर्यावरण के प्रति संवेदनशील नहीं होता है जिसमें यह चल रहा है।

मुझे निम्नलिखित चेतावनी मिलती है:

[javac] build.xml:9: warning: 'includeantruntime' was not set, 
defaulting to build.sysclasspath=last; set to false for repeatable builds

इसका क्या मतलब है?


अपनी build.xml फ़ाइल में <property name="build.sysclasspath" value="last"/> का उपयोग करें

अधिक जानकारी के लिए खोज includeAntRuntime में includeAntRuntime है

अन्य संभावित मूल्य here पाए जा सकते here


चेत होसे ने यहां एक अच्छी व्याख्या लिखी:

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

यह निर्णय लिया गया कि शायद यह नहीं था कि ज्यादातर लोग क्या चाहते थे। तो अब इसके लिए एक विकल्प है।

यदि आप "सत्य" (includeantruntime के लिए) चुनते हैं, तो कम से कम आप जानते हैं कि आपके बिल्ड क्लासपाथ में एंटी रनटाइम शामिल होगा। यदि आप "झूठा" चुनते हैं तो आप इस तथ्य को स्वीकार कर रहे हैं कि पुराने संस्करण और 1.8+ के बीच निर्माण व्यवहार बदल जाएगा।

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


डैनियल का जवाब सिर्फ सही काम करता है। यहां एक नमूना स्निपेट है जिसे मैंने अपने build.xml में जोड़ा है:

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
                                                 <!--   ^^^^^^^^^^^^^^^^^^^^^^^^^  -->
        <classpath>
            <path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
            <path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
        </classpath>
    </javac>
</target>

मुझे इसका सामना करना पड़ा, मैं प्रोग्राम और फीचर में चेक इन करता हूं। jdk1.8 के लिए एक अद्यतन स्थापित किया गया था जो ग्रहण में चींटी के लिए मेरी पुरानी सेटिंग (jdk1.6.0) के साथ संगत नहीं है। मैं उस अद्यतन को स्थापित करता हूं। अभी, मेरी चींटी परियोजना सफलता का निर्माण कर रही है।

कोशिश करो, उम्मीद है कि यह सहायक होगा।


जैसा कि @ डैनियल कुटिक ने उल्लेख किया है, PreSetDef एक अच्छा विकल्प है। विशेष रूप से यदि कोई ऐसी परियोजना पर काम कर रहा है जिसमें कई build.xml फ़ाइलें हैं जो कोई नहीं कर सकता है, या नहीं करना पसंद करता है, तो संपादित करें (उदाहरण के लिए, तृतीय पक्षों से।)

presetdef उपयोग करने के लिए, इन पंक्तियों को अपनी शीर्ष-स्तरीय build.xml फ़ाइल में जोड़ें:

  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>

अब सभी बाद के includeantruntime="false" कार्यों को अनिवार्य रूप से शामिल includeantruntime="false" । यदि आपकी परियोजनाओं को वास्तव में चींटी रनटाइम पुस्तकालयों की आवश्यकता होती है, तो आप उन्हें अपनी बिल्ड फ़ाइलों में स्पष्ट रूप से जोड़ सकते हैं या includeantruntime="true" सेट कर सकते हैं। उत्तरार्द्ध भी चेतावनियों से छुटकारा पा जाएगा।

इसके बाद वांछित javac कार्य वांछित रूप से इसे बदल सकते हैं, उदाहरण के लिए:

<javac destdir="out" includeantruntime="true">
  <src path="foo.java" />
  <src path="bar.java" />
</javac>

मैं ANT_OPTS का उपयोग करने के खिलाफ अनुशंसा करता ANT_OPTS । यह काम करता है, लेकिन यह चेतावनी के उद्देश्य को हरा देता है। चेतावनी एक को बताती है कि किसी का निर्माण किसी अन्य प्रणाली पर अलग-अलग व्यवहार कर सकता है। ANT_OPTS का उपयोग ANT_OPTS से यह और भी अधिक संभावना बन जाती है क्योंकि अब प्रत्येक सिस्टम को उसी तरह ANT_OPTS का उपयोग करने की आवश्यकता होती है। साथ ही, ANT_OPTS वैश्विक रूप से लागू होंगे, आपकी सभी परियोजनाओं में चेतावनियों को ANT_OPTS


यदि आप एक्लिप्ससेंक के साथ जेपीए का उपयोग कर रहे हैं, तो आपको @PrivateOwned एनोटेशन सेट करना होगा

प्रलेखन: ग्रहण विकी - एक्लिप्ससेंक जेपीए एक्सटेंशन का उपयोग करना - अध्याय 1.4 @ निजीवृत्त एनोटेशन का उपयोग कैसे करें





java ant build javac build-tools