我开发了一个普通的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