2012-05-05 14 views
37

जब मैं अपने जावा प्रोग्राम चलाते हैं, तो यह मुझे एक त्रुटि इस लाइन पर देता हैjava.lang.NullPointerException त्रुटि को हल करने के लिए कैसे करें?

compiler.getTask(null, null, new DiagnosticCollector<JavaFileObject>(), null, null, compilationUnits);

मैं हो रही है त्रुटि है:

Exception in thread "main" java.lang.NullPointerException 
    at AnotherClassLoader.loadClass(test.java:58) 
    at test.main(test.java:30) 
    at Main.main(Main.java:68) 

क्या आप मुझे बता सकते हैं कि मैं कैसे इस त्रुटि को हल कर सकते हैं ?

+0

यदि आप कोई सहायता चाहते हैं तो कृपया एक [एसएससीसीई] (http://www.sscce.org) शामिल करें। हम एसएससीसीई के बिना ज्यादा कुछ नहीं कर सकते हैं। धन्यवाद। ओह, और कृपया अपने प्रश्न का शीर्षक कुछ और अधिक वर्णनात्मक में बदलने पर विचार करें। – kentcdodds

+0

स्टैकट्रैक आपको सटीक रेखा देता है जहां 'NullPointerException'occurs। आपको बस समझना होगा कि आपको यह क्यों मिला और इसे ठीक किया गया ... –

+4

यह समस्या की पहचान ** ** और फिर ** पहचान की गई समस्या को ठीक करने ** द्वारा हल किया गया है। एनपीई [केवल] के मामले में हो सकते हैं: 'someNullExpression.someMember'। यही है, स्वाभाविक रूप से होने के लिए इस अपवाद के लिए 'शून्य' मान किसी सदस्य/विधि की * लक्ष्य * अभिव्यक्ति होना चाहिए। पोस्ट किए गए उदाहरण में केवल * एक * अभिव्यक्ति है जो इस आवश्यकता को पूरा कर सकती है। (संकेत: 'कंपाइलर' चर का मूल्यांकन क्या करता है?) –

उत्तर

6

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

74

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

उदाहरण के लिए, मैं ऐसा करते हैं तो:

Integer myInteger = null; 
int n = myInteger.intValue(); 

कोड myInteger की intValue हड़पने की कोशिश करता है, लेकिन जब से यह शून्य है, यह एक नहीं है: एक नल पॉइंटर एक्सेप्शन होता है।

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

1

अंधेरे में बस एक शॉट (चूंकि आपने compiler हमारे साथ प्रारंभिक कोड साझा नहीं किया है): जिस तरह से आप compiler पुनर्प्राप्त करते हैं, इस समस्या का कारण बनता है। जेडीके के विपरीत जेडीके के अंदर रहने के लिए अपने जेआरई को इंगित करें, इसलिए कोई भी उपकरण प्रदान नहीं करता है, परिणाम NPE में परिणाम।

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