2012-02-09 7 views
18

में हैं, मैंने एक सुपर सरल जावा क्लास लिखा है जो इसे अपवादों को फेंक रहा है। हालांकि स्टैक ट्रेस मैं इस तरह दिखता हो रही है:"अज्ञात स्रोत", फिर भी लाइन नंबर क्लास फ़ाइल

java.lang.RuntimeException: hello 
     at Main.go(Unknown Source) 
     at Main.main(Unknown Source) 

नोट: वहाँ स्टैक ट्रेस में कोई लाइन नंबर दिए गए हैं और मैं वहाँ चाहते हैं होने के लिए।

इस समस्या को हल करते समय आपको जो जवाब मिलते हैं, वे संकलन समय पर सही पैरामीटर जोड़ने के बारे में हैं, यह सुनिश्चित करने के लिए कि लाइन संख्या वास्तव में इसे कक्षा फ़ाइल में बनाते हैं। हालांकि, मुझे लगता है कि मेरी समस्या नहीं है के रूप में मैं

<javac 
    debug="true" 
    debuglevel="lines,vars,source" 
    includeAntRuntime="false" 
    classpathref="classpath.compile" 
    srcdir="${src.dir}" 
    destdir="${build.classes}" /> 

इसके अलावा मेरे चींटी build.xml में यह है, javap के अनुसार विश्वास नहीं है, यह लाइन नंबर की तरह लग रहा था में इसे बनाना:

$ javap -l ./build/classes/Main | head -n 9 
public class Main extends java.lang.Object{ 

public Main(); 
    LineNumberTable: 
    line 14: 0 
    line 22: 4 
    line 23: 15 
    line 24: 26 

तो क्या देता है? क्या कोड है जब मैं jvm में सेट करने की आवश्यकता है?

धन्यवाद!

+0

क्या आप सर्वर मोड में जेवीएम चला रहे हैं, यानी 'जावा-सर्वर'? इसके अलावा, क्या आप jre या jdk स्थापना से बाहर चल रहे हैं? – shams

+0

-सर्वर का उपयोग नहीं कर रहा है और मैं एक jdk – andersonbd1

+0

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

उत्तर

22

मुझे लगता है कि सही तरीका है मिल जाएगा:

<javac debug="true" debuglevel="lines,vars,source" 

नोट वहाँ लाइनों के बीच स्पेस नहीं, वार्स, स्रोत

+0

क्या एकमात्र अलग सत्य बनाम है? यदि हां, तो मैंने कोशिश की और इससे मदद नहीं मिली। हालांकि धन्यवाद। – andersonbd1

+1

क्या आप पूरे टैग पोस्ट कर सकते हैं? – bvanvelsen

+0

मैं डीबग = ऑन पसंद करते हैं – lwpro2

2

another question पर इस जवाब मिला:

यह सामान्य रूप से लापता डिबग जानकारी से संबंधित है। आप शायद जेआरई (जेडीके नहीं) का उपयोग कर रहे हैं, जिसमें rt.jar कक्षाओं के लिए डीबग जानकारी शामिल नहीं है। पूर्ण JDK उपयोग करने का प्रयास, आप उचित स्थानों में स्टैक ट्रेस

+0

मुझे वह नोट भी मिला, लेकिन मुझे नहीं लगता कि मेरे लिए लागू होता है। # 1) मैं एक जेडीके और # 2 का उपयोग कर रहा हूं) मुझे लगता है कि केवल इसलिए मायने रखता है क्योंकि जावा एपीआई कक्षाओं के लिए संकलित कक्षा फाइलें ... हालांकि, यह मेरी खुद की कस्टम क्लास – andersonbd1

+0

एंडरसन सही है, जेडीके केवल भर जाएगा एसडीके घटकों के लिए डीबग जानकारी में। जिस पर शीर्ष _the में एक compiler_ शामिल नहीं है। मुझे लगता है कि शायद आपको यह पोस्ट नहीं करना चाहिए था। –

1

मुझे बिल्कुल वही समस्या थी। हमारे पर्यावरण में यह अनुकूलन-झंडा बंद करने में मदद मिली:

<javac optimize="off" ... 

जाहिर चींटी करता नहीं उपेक्षा विशेषता का अनुकूलन, हालांकि Ant-Doc गुण "का अनुकूलन" के लिए कहते हैं (और हम जावा 1.7 का उपयोग कर रहे):

इंगित करता है कि स्रोत अनुकूलन के साथ संकलित किया जाना चाहिए; बंद करने के लिए डिफ़ॉल्ट। ध्यान दें कि इस ध्वज को सिर्फ जेडीके 1.3 से शुरू होने वाले सूर्य के जावैक द्वारा अनदेखा किया गया है (क्योंकि संकलन-समय अनुकूलन अनावश्यक है)।

संबंधित मुद्दे