WILDFLY - 动态加载 jar java.lang.ClassNotFoundException

WILDFLY - Loading jar dynamically java.lang.ClassNotFoundException

我在 wildfly 中部署了一个 EAR,我正在使用以下代码从源代码加载一个 jar:

File file = new File("C:\XXXX\XXXX\ProcessTest.jar");   
String lcStr = "com.package.test.TestProcess";      
URLClassLoader cl = URLClassLoader.newInstance(new URL[]{file.toURL()});

Class<?> loadedClass;
try {
    loadedClass = cl.loadClass(lcStr);
    IProcess data = (IProcess)loadedClass.newInstance();
    data.start();
} catch (Exception e) {
    e.printStackTrace();
}

TestProcess class 实现了使用 EAR 加载到另一个 jar 中的 IProcess。

当我 运行 服务器代码和 class 被转换时,我收到:

java.lang.NoClassDefFoundError: com/package/test/process/IProcess


如果我在正在加载的 JAR 中添加接口,问题是 CastException,因为 wildfly 加载的 com/package/test/process/IProcess 与 JAR 加载的不同。

我需要接收 IProcess(转换对象),因为解决方案是使用 Mehtod.invoke 直接调用方法,但这不是我的问题的解决方案。

提前致谢。

这个技巧非常有效:

URLClassLoader.newInstance(新URL[]{file.toURL()}, IProcess.class.getClassLoader())

感谢 Steve C!