我有 3 个 Java 项目 A、B 和 C。B 就像 A 的附加组件。A 和 B 对于某些类都依赖于项目 C。
现在在项目 A 中,当我使用 URLClassLoader 时,如下所示:
URLClassLoader ucl = new URLClassLoader(urls); //urls are paths to some classes in B
现在使用这些 ucl 时,当我在 B 中调用一些方法时,它给了我No Class Definition found exception。这是针对 C 类的。
现在,当我使用 ClassLoader 时,如下所示:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URLClassLoader ucl = new URLClassLoader(urls, classLoader);
当我调用 B 中的方法时,这很好用。我的问题:
1)当我以第一种方式执行时,正在使用哪个 ClassLoader?我阅读了 JavaDocs,但找不到任何可以解释的内容。
2)有没有办法获得一个特定于项目B的ClassLoader,我可以以某种方式使用它,这样我就不会遇到任何依赖问题?
谢谢你的帮助。