我有一个带有抽象类的Java Web 应用程序,(我们称之为ClassA
)部署在应用程序服务器上。这个 java web 应用程序还通过使用这个问题的接受响应的方法动态地从外部 jar 加载类。
一切正常,直到我加载一个ClassB
从ClassA
. 我在 SysOut 上收到一条java.lang.ClassNotFoundException: ClassA
错误消息,指向加载类的行:urlClassLoader.loadClass(className);
.
我以为我不会有问题,因为当我调用 时URLClassLoader.newInstance()
,它是从默认的父类加载器创建的,我认为它应该是SystemClassLoader
,我假设它包含 WebApp 类。
我的任何假设是错误的吗?
如何从外部 Jar 加载一个类,该 Jar 恰好从 WebApplication 类加载器中加载的父类扩展?
我尝试将我的 WebApp 的部署配置从 parent first 更改为 parent last,并得到了同样的错误。我也尝试Class.forName("ClassA")
在执行该行之前执行一次,URLClassLoader.loadClass("ClassB")
但再次遇到相同的错误。