我创建了一个班级“Class B
”
package com.b
public class B
{
public void printMsg()
{
System.out.println("Called");
}
}
我创建了一个包含“Class A
”
package com.a
import com.b
public class A extends B
{
}
当我尝试使用以下代码动态加载jar时,我收到错误“Class B
”“classnotfoundexception
”
ClassLoader cl = new URLClassLoader(new URL[] { new URL(jarFullPath) });
Class<?> cla = cl.loadClass(className);
Object obj = cla.newInstance();
答案 0 :(得分:0)
我认为这是因为您没有向ClassLoader
提供任何父URLClassLoader
,以便它可以找到A
而不是B
,请尝试这样做:< / p>
ClassLoader cl = new URLClassLoader(
new URL[] {new URL(jarFullPath)}, Thread.currentThread().getContextClassLoader()
);
将[{1}}用作与上下文Thread.currentThread().getContextClassLoader()
对应的父ClassLoader
。