带动态加载Jar的Java NoClassDefFoundError

时间:2016-02-25 18:54:42

标签: java jar

这是我的广义术语中的问题,因为我无法发布我的实际代码。

我动态加载包含包com.jar的jar。然后我尝试从该jar加载类com.jar.MyClass并在新加载的类上调用doThing()。当java.lang.NoClassDefFoundError引用doThing()中的另一个类并且.class文件位于jar中时,我收到com.jar

这是我在我的代码中尝试做的事情:

File jarFile = new File(pathToJar)
URLClassLoader classLoader = new URLClassLoader(new URL[] { jarFile.toURI().toURL() }, this.getClass().getClassLoader());
Thread.currentThread().setContextClassLoader(classLoader);

Class jarClass = Class.forName("com.jar.MyClass", true, classLoader);
Constructor<?> ctor = adapterClass.getDeclaredConstructor(Integer.class);
MyClass newMyClass = (MyClass) ctor.newInstance(1);
newMyClass.doThing(); //At some point in method makes reference to com.jar.AnotherClass

我不知道为什么我可以加载com.jar.MyClass,但它无法在同一个jar中引用其他类。

0 个答案:

没有答案