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

时间:2016-01-27 09:52:00

标签: java java-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<?> loadedClass;
try {
    loadedClass = cl.loadClass(lcStr);
    IProcess data = (IProcess)loadedClass.newInstance();
    data.start();
} catch (Exception e) {
    e.printStackTrace();
}

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

当我运行服务器代码并且正在进行类化时,我会收到:

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

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

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

先谢谢了。

1 个答案:

答案 0 :(得分:0)

这个技巧完美无缺:

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

感谢Steve C!