ant - कैसे एक चींटी कार्य के माध्यम से javac चल रहा है जब संकलक आउटपुट को देखने के लिए?




output (5)

क्या चींटी कार्य के माध्यम से javac समय कंपाइलर आउटपुट को देखने के लिए कोई स्पष्ट रूप से स्पष्ट और सरल तरीका है?

यहाँ मेरा javac चींटी टैग है:

<javac srcdir="${myproject.src}" destdir="${myproject.class}">
    <!-- ... -->
</javac>

यहां केवल एक ही त्रुटि संदेश दिया गया है:

/path/to/build.xml:42: Compile failed; see the compiler error output for details.

समस्या यह है कि मुझे पता नहीं है कि विवरण के लिए कम्पाइलर त्रुटि आउटपुट कैसे देखें ...

कुछ कॉन्फ़िगरेशन तत्व जो मदद कर सकते हैं:

  • चींटी 1.6.5
  • विंडोज 7 एक्स 64
  • जावा 1.6.0_20 x 32
  • एक्लिप्स द्वारा लक्ष्य लॉन्च करना

मुझे पता है कि कुछ संबंधित सवालों के जवाब SO पर हैं, लेकिन उनमें से कोई भी वास्तव में इस सरल प्रश्न का उत्तर नहीं देता:

  • https://.com/a/1275552/1225328 : मैं विशिष्ट पुस्तकालय नहीं जोड़ सकता जो कि compile टैग की अनुमति देता है;
  • https://.com/a/1264622/1225328 : यह कंपाइलर के बजाय एंट का आउटपुट प्रबंधित करता है;
  • संकलन विफल; विवरण के लिए कंपाइलर त्रुटि आउटपुट देखें : कुछ भी हल करने के लिए बहुत अस्पष्ट;
  • चींटी: संकलन विफल; विवरण के लिए संकलक त्रुटि आउटपुट देखें : कोई जवाब नहीं ...
  • आदि।

Answers

मुझे लगता है कि आप verbose="true" विशेषता की तलाश कर रहे हैं

वर्बोस आउटपुट के लिए कंपाइलर पूछता है; कोई चूक नहीं

आपने टिप्पणी में पहले ही उल्लेख किया है कि यह आपकी त्रुटि के कारण प्रिंट नहीं करता है। ठीक है मुझे लगता है कि आपकी स्थिति में कुछ और चल रहा है मेरे पास नमूना प्रोजेक्ट है और किसी भी तरह से मेरी त्रुटि का कारण मुद्रित किया गया था। यहां verbose="false" साथ आउटपुट दिया गया है:

[mkdir] Created dir: C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\mavensandbox.xml:284: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 3 source files to C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\src\main\java\com\sandbox\Sandbox.java:8: error: cannot find symbol
[javac]         System.out.prinln("Hello, I\'m the best!");
[javac]                   ^
[javac]   symbol:   method prinln(String)
[javac]   location: variable out of type PrintStream
[javac] 1 error

आपके कोड के लिए कुछ अजीब और विशिष्ट खराब त्रुटि संदेश पैदा कर रहा है। क्या आप एक नमूना प्रोजेक्ट बना सकते हैं जो त्रुटि को पुन: उत्पन्न करता है?

जैसा आपने उल्लेख किया है, debug="true" वह विशेषता नहीं है जिसे आप ढूंढ रहे हैं।

इंगित करता है कि स्रोत डीबग जानकारी के साथ संकलित किया जाना चाहिए; बंद करने के लिए डिफ़ॉल्ट अगर बंद किया जाता है, -g: कोई भी कंपाइलर के लिए कमांड लाइन पर पारित किया जाएगा जो इसे समर्थन करते हैं (अन्य कंपाइलर के लिए, कमांड लाइन तर्क का उपयोग नहीं किया जाएगा)। अगर सही पर सेट किया जाता है, तो डीबगलेवल विशेषता का मान कमांड लाइन तर्क निर्धारित करता है।

आप जानते हैं कि जब आप स्टैक ट्रेस लेते हैं और इसमें लाइन नंबर होता है? वही है जो debug="true" करता है यदि यह बंद है, तो आपको रेखा संख्याएं नहीं मिलेंगी।


समस्या भी तब होती है जब जावा-कंपाइलर स्वयं शुरू नहीं कर सकता। एक उदाहरण के रूप में, जब परिभाषित ढेर बहुत बड़ा है। Intellij के java2 कार्य जानकारी प्रदर्शित करेगा

Using external javac compiler
Compilation arguments:
...
'-J-Xmx1600m'
...
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

और build.xml फ़ाइल का कारण, मेरे मामले में:

<property name="compiler.args" value="-J-Xmx1600m"/>

इसे इस्तेमाल करो

<javac srcdir="src" destdir="build/classes" debug="true">
            <classpath>
                <path refid="classpath"/>
            </classpath>
</javac>

मुझे एक ही त्रुटि संदेश मिल रहा था और कोई और जानकारी नहीं थी मेरी .jar फ़ाइलों में से एक होने में समस्या समाप्त हो गई थी I उस .jar फाइल की जगह समस्या हल।


मैंने हमेशा पोस्ट का उपयोग किया लेकिन डब्ल्यू 3 सी मानक के अनुसार, एसओएपी दोनों पोस्ट और जीईटी विधियों का समर्थन करता है।

संपादित करें: कुछ शोध के बाद, ऐसा लगता है कि यह पूरी तरह से सच नहीं है, जैसा कि आप here देख सकते हैं। जीईटी का उपयोग करना सैद्धांतिक रूप से संभव है क्योंकि पोस्ट और जीईटी HTTP ट्रांसपोर्ट प्रोटोकॉल के तरीके हैं और एसओएपी HTTP पर इस्तेमाल किया जा सकता है।

लेकिन जैसा कि आप जानते हैं, GET क्वेरी स्ट्रिंग में अनुरोध शामिल है। एसओएपी अनुरोध (एक्सएमएल संदेश) आमतौर पर क्वेरी स्ट्रिंग में शामिल होने के लिए बहुत ही जटिल और वर्बोज़ होते हैं, इसलिए लगभग हर कार्यान्वयन (उदाहरण के लिए जेएक्स-डब्ल्यूएस) केवल पोस्ट का समर्थन करता है।







java ant output javac