繁体   English   中英

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类实现了与EAR一起加载到另一个jar中的IProcess。

当我运行服务器代码并且正在强制转换类时,我收到:

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())

多亏史蒂夫C!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM