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

WILDFLY-动态加载jar java.lang.ClassNotFoundException,java,jakarta-ee,jar,classpath,wildfly,Java,Jakarta Ee,Jar,Classpath,Wildfly,我在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<?> loadedCl

我在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();
}
File File=new文件(“C:\\XXXX\\XXXX\\ProcessTest.jar”);
字符串lcStr=“com.package.test.TestProcess”;
URLClassLoader cl=URLClassLoader.newInstance(新URL[]{file.toURL()});
类装入类;
试一试{
loadedClass=cl.loadClass(lcStr);
IProcess data=(IProcess)loadedClass.newInstance();
data.start();
}捕获(例外e){
e、 printStackTrace();
}
TestProcess类实现IProcess,该IProcess通过EAR加载到另一个jar中

当我运行服务器代码并且正在铸造该类时,我收到:

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


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

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


提前谢谢

此技巧非常有效:

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


感谢史蒂夫C

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