Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

Java में ClassNotFoundException और NoClassDefFoundError में क्या अंतर हैं?

दोनों ClassNotFoundException और NoClassDefFoundError जब JVM या ClassLoader रन-टाइम पर लोड करते समय उपयुक्त वर्ग खोजने में सक्षम नहीं होते हैं तो त्रुटियाँ होती हैं। ClassNotFoundException एक जाँच अपवाद है और NoClassDefFoundError एक त्रुटि है जो अनियंत्रित के अंतर्गत आती है।

ClassLoader . के विभिन्न प्रकार हैं अंतर स्रोतों से कक्षाओं को लोड करता है, कभी-कभी यह पुस्तकालय जेएआर फाइलों को गायब या गलत वर्ग-पथ का कारण बन सकता है जिसके कारण लोडर रन-टाइम पर कक्षा को लोड करने में सक्षम नहीं होता है।

ClassNotFoundException

ClassNotFoundException तब आता है जब हम परावर्तन का उपयोग करके रन-टाइम पर एक वर्ग को लोड करने का प्रयास करते हैं और यदि वे वर्ग फाइलें गायब हैं तो एप्लिकेशन या प्रोग्राम को ClassNotFoundException के साथ फेंक दिया जाता है। अपवाद। संकलन-समय पर जाँच करने के लिए कुछ भी नहीं है क्योंकि यह कक्षा को रन-टाइम पर लोड कर रहा है।

उदाहरण

public class ClassNotFoundExceptionTest {
   public static void main(String[] args) {
      try {
         Class.forName("Test");
      } catch (ClassNotFoundException cnfe) {
         System.err.println("You are trying to search for a class is not existing. "+cnfe);
      }
   }
}

आउटपुट

You are trying to search for a class is not existing. java.lang.ClassNotFoundException: Test


NoClassDefFoundError

NoClassDefFoundError तब फेंका जाता है जब एक वर्ग को क्लासपाथ से एक विशिष्ट वर्ग के साथ संकलित किया जाता है, लेकिन यदि एक ही वर्ग रन-टाइम के दौरान उपलब्ध नहीं होता है। JAR फ़ाइलें गुम होना NoClassDefFoundError . प्राप्त करने का सबसे बुनियादी कारण है . जावा एपीआई डॉक्स के अनुसार "खोज-के लिए वर्ग परिभाषा मौजूद थी जब वर्तमान में निष्पादित वर्ग संकलित किया गया था, लेकिन परिभाषा अब नहीं मिल सकती है।"

उदाहरण

class Test1 {
   public void show() {
      System.out.println("show() method called");
   }
}
public class Test2 {
   public static void main(String[] args) {
      Test1 t = new Test1();
      t.show();
   }
}

जब हम दोनों वर्गों को संकलित करते हैं तो हमें दो वर्ग फ़ाइलें मिलती हैं Test1.class और Test2.class, टेस्ट2 running चलाते समय क्लास बस Test1.class को हटा दें फ़ाइल तो हमें NoClassDefFoundError मिल रही होगी नीचे के रूप में

आउटपुट

Exception in thread "main" java.lang.NoClassDefFoundError: Test1
         at Test2.main(Test2.java:9)

  1. जावा में JTextField और JTextArea के बीच क्या अंतर हैं?

    JTextField . के बीच मुख्य अंतर और JTextArea जावा में यह है कि एक JTextField पाठ की एक पंक्ति . में प्रवेश करने की अनुमति देता है GUI एप्लिकेशन में जबकि JTextArea पाठ की एक से अधिक पंक्तियाँ entering दर्ज करने की अनुमति देता है GUI एप्लिकेशन में। JTextField एक JTextFeld सबसे महत्वपूर्ण घटकों म

  1. जावा में JFrame और JDialog में क्या अंतर हैं?

    जेफ्रेम फ्रेम में जोड़े गए घटकों को इसकी सामग्री के रूप में संदर्भित किया जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है . JFrame . में एक घटक जोड़ने के लिए , हमें इसके contentPane . का उपयोग करना चाहिए इसके बजाय। एक JFrame शीर्षक . के साथ एक विंडो है , सीमा , (वैकल्पिक) मेनू बार और उप

  1. Java में GridLayout और GridBagLayout में क्या अंतर हैं?

    एक ग्रिडलेआउट सभी घटकों को एक आयताकार ग्रिड में रखता है और समान आकार के आयतों . में विभाजित किया जाता है और प्रत्येक घटक को एक आयत के अंदर रखा जाता है जबकि GridBagLayout एक लचीला . है लेआउट प्रबंधक जो घटकों को लंबवत और क्षैतिज रूप से . संरेखित करता है यह आवश्यक नहीं है कि घटक समान आकार के हों।