2013-06-25 9 views
9

एक शोध परियोजना के लिए, मैं एक्लिप्स के साथ ओपनजेडीके स्रोतों पर विकास कर रहा हूं। डीबगिंग उद्देश्यों के लिए, एकीकृत अभिव्यक्ति के "अभिव्यक्ति" और "प्रदर्शन" दृश्य काफी उपयोगी हैं। javac कंपाइलर टूल के कोड के माध्यम से कदम उठाने पर, अभिव्यक्ति दृश्य कुछ कक्षाओं में विफल रहता है। फिर, यहां तक ​​कि सबसे सरल अभिव्यक्तियों को उनके मूल्य कॉलम में <error(s)_during_the_evaluation> मिलता है। विस्तृत त्रुटि संदेश तब है:ग्रहण अभिव्यक्ति दृश्य कुछ वर्गों पर क्यों विफल रहता है?

Evaluations must contain either an expression or a block of well-formed statements 

मैं बहुत यकीन है कि, मैं बुला विधि (एक स्टैक फ्रेम अधिक) के लिए एक सरल स्विच के रूप में मान्य भाव में प्रवेश किया है, दृश्य काम कर बनाता है।

मैं दो स्क्रीनशॉट दो अपलोड कर दिया है समस्या स्पष्ट करने:

नहीं-श्रमिक वर्ग JavacParser: Not-working class

कामगार वर्ग EndPosParser: Working class

किसी को भी कभी अनुभव किया है एक समान समस्या या जानता है कि इसका कारण क्या है या इसे कैसे ठीक किया जाए? दो दिखाए गए विचारों के बीच स्विच करते समय, मैं एक स्टैक फ्रेम को ऊपर जाने के अलावा कुछ और नहीं करता हूं। दोनों मामलों में दोनों अभिव्यक्तियों का मूल्यांकन होने की उम्मीद है। जहां तक ​​मैं इसका मूल्यांकन कर सकता हूं, दिखाया गया असफल व्यवहार केवल JavacParser वर्ग में होता है।

धन्यवाद!

+0

मैं विशेष रूप से इतने सारे पुराने रिपोर्ट और इस त्रुटि के लिए बग फिक्स टकरा है, लेकिन वे सभी पुराने समस्याओं से संबंधित हो रहे हैं (यानी : संस्करण 3.1-3.8 के साथ जेनरिक के साथ कक्षाएं), अब मैं 4.x + पर हूं और अभी भी इसे देख रहा हूं। उम्मीद है कि किसी को स्पष्टीकरण मिलेगा ताकि इसकी सूचना दी जा सके। –

+0

मैं toString() विधि को ओवरराइड करके उस पर घूमने में कामयाब रहा हूं। शायद वह एक शॉट देना चाहें। यद्यपि यह हासिल करने का एक हैक-वाई तरीका है। अगर मैं बेहतर समाधान के साथ आता हूं तो मैं इसे बाद में अपडेट करूंगा। –

उत्तर

0

जहां तक ​​मुझे पता है, वर्तमान (शीर्ष) स्टैकफ्रेम के संदर्भ में अभिव्यक्तियों का मूल्यांकन किया जाता है।

ऐसा लगता है कि जब कोई ऑब्जेक्ट (EndPosParser) बनाया गया था तो आपका पहला स्क्रीनशॉट लिया गया था। चूंकि आपकी ऑब्जेक्ट अभी तक मौजूद नहीं है, this का मूल्यांकन नहीं किया जा सकता है। this का संदर्भ तब तक मूल्यांकन नहीं किया जा सकता जब तक कि सुपर-कॉल श्रृंखला Object तक नहीं पहुंच जाती।

मुझे यकीन नहीं है कि 1+2 का मूल्यांकन क्यों नहीं किया जा सकता है। मेरा सबसे अच्छा अनुमान होगा: ग्रहण गैर-स्थैतिक विधि के रूप में रचनाकारों को मान्यता देता है और गैर-स्थैतिक संदर्भ में 1+2 का मूल्यांकन करने का प्रयास करता है। लेकिन यह फिर से विफल रहता है, क्योंकि this अभी तक मौजूद नहीं है।

संपादित करें: यह एक बहुत पुराना सवाल मैं सिर्फ जवाब देने के लिए कोशिश की ...

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