एक को कॉपी एक जावा कोड के रूप में की है।बूटस्ट्रैप वर्ग रास्ते में एक जार फ़ाइल काम नहीं कर रहा
$jar -cvf hello.jar Hello.class
मैं के रूप में एक और कार्यक्रम लिखा है::
class Test1
{
public static void main(String[] args)
{
new Hello().print();
System.out.println(Hello.class.getClassLoader());
}
}
और वर्तमान निर्देशिका से Hello.class नष्ट कर दिया मैं के रूप में एक जार फ़ाइल hello.jar में जोड़ा।
तब मैंने एक्सटेंशन क्लास पथ में hello.jar की प्रतिलिपि बनाई। मेरे कार्यक्रम काम करता है ठीक है:
$sudo cp hello.jar /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext
$ java Test1
Hi
[email protected]
$
अगर मैं विस्तार वर्ग पथ से hello.jar हटा सकते हैं और बूट पट्टा वर्ग पथ (usr/lib/JVM/जावा-8-openjdk-amd64/JRE/lib में इसे कॉपी /) जिसमें rt.jar भी है, तो मेरा प्रोग्राम काम नहीं कर रहा है।
$ java Test1
Exception in thread "main" java.lang.NoClassDefFoundError: Hello
at Test1.main(Test1.java:5)
Caused by: java.lang.ClassNotFoundException: Hello
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
मेरे ज्ञान के अनुसार बूटस्ट्रैप या एक्सटेंशन क्लास लोडर में सभी जार फ़ाइलों को प्रोग्राम में उपयोग किया जा सकता है। जावा ने उस अपवाद को क्यों फेंक दिया है यदि यह सही है? अगर मैं सही नहीं हूं तो कृपया मुझे मार्गदर्शन करें।