我找到了其他人可以找到的线程并解决了该错误;但是,所有这些都没有使用完全限定的类路径。我似乎无法让Class.forName工作,并且我正在使用完全限定的路径。
我已经测试过从CLI编译并使用ItelliJ Idea的能力。两者均因相同的错误而失败。
代码(在测试目录中):
package test;
public class Test {
public static void main(String[] args) {
Class cls = Class.forName("java.util.ArrayList");
}
}
错误:
java.lang.ClassNotFoundException;必须被抓住或宣布被抛出
上面的示例不起作用。提前致谢!
最佳答案
您收到此消息是因为ClassNotFoundException
是已检查的异常。这意味着不能忽略此异常。您需要用try/catch
构造将其包围并提供异常处理,或者在您的方法中添加throws
子句并在被调用者中对其进行处理。
编辑:
请注意,在编译过程中不会解析Class.forName()
构造。编写这样的语句时,是在告诉JVM在程序执行期间查找可能尚未加载的类。 Java库是动态链接的,而不是静态链接的,这意味着它们的代码未包含在您的程序代码中,仅在需要时才加载。这就是为什么它抛出ClassNotFoundException
的原因。