我在从动态加载的类中动态加载 java 类时遇到问题。
我的类是一个ImageJ
插件,它通过classloader
. 我在加载引用与插件NoClassDefFoundError
在同一个包中的东西的模块时。ImageJ
我具体做的是:
- ImageJ 加载插件 (A)
- (A) 获取系统类加载器
- (A) 将 jar url 添加到类加载器
- (A) 尝试使用在 jar 中加载所需的类 (B)
Class.forName
我无法加载 B 类,因为我得到了NoClassDefFoundError
由 B 指向 A 中的类而在当前类加载器中找不到的结果。
我认为我需要首先使用ImageJ
用于加载插件的相同类加载器才能加载我的模块并仍然找到对以前加载的 jar 的引用ImageJ
。我想这样做而不必重新编译ImageJ
。
有什么方法可以解决这个问题而不必ImageJ
修改代码或修改它?
伪类示例
package a;
class A extends PlugInFrame {}
package a;
class C extends MyOwnPlugIn {}
package b;
import a;
class B extends C {}