我们有一个 servlet 项目,其中包含(在许多其他类中)我们向用户公开的接口。
用户可以编译他们自己的实现所提供接口的类(以 .class 文件的形式),并将它们放在我们项目知道的文件夹中。当 servlet 启动时,它使用 URLClassLoader 加载该文件夹中的所有 .class 文件。(因此用户可以参与某些事件。)
据我所知,类文件的位置和加载正确,有点。加载用户编译的 .class 文件时,会抛出 ClassNotFoundException 异常,但它会抱怨接口,该接口应该已经在类路径上。
Caused by: java.lang.ClassNotFoundException: com.company.project.OurInterface
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
动态加载.class文件时,找不到接口是不是有原因?