[英]java.lang.ClassNotFoundException when loading a class from a jar file
[英]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.