我開發了一個普通的Java項目,我試圖瞭解ClassNotFoundException
和NoClassDefFoundException
之間的區別。我發現了一個奇怪的行爲,那就是當我打電話給Class.forName()
時,我需要包含整個包結構。爲什麼整個包結構需要包含在Class.forName()中?
請參見下面的代碼:
package org.com;
public class MainApp {
public static void main(String[] args) {
try {
Class cls = Class.forName("org.com.MainApp");
System.out.println("Class = " + cls.getName());
} catch(ClassNotFoundException ex) {
System.out.println(ex.toString());
}
}
}
如果我使用Class.forName("MainApp")
,而不是Class.forName("org.com.MainApp")
拋出一個異常。
有人能解釋一下這個的真正原因嗎?
感謝您的回覆。我試圖從一個在線學習網站獲得這個想法,並且他們沒有使用完全合格的名稱來使用它。 – Saurabh
@Saurabh他們可能會將他們的類放在默認包中。 – Pragnani