我有一个非常棘手的问题。ComponentContext
我有一个容器,可以使用以类作为参数的方法运行自定义 JAR 。加载后我想用反射调用这个方法,但是有一个问题——我必须使用相同的类加载器(在这种情况下为 JCL)来创建ComponentContext
. 见代码:
JclObjectFactory factory = JclObjectFactory.getInstance();
Object context = factory.create(jcl, "org.hive.lib.component.ComponentContextImpl");
Method setConfigDirMethod = context.getClass().getMethod("initialize", File.class, File.class);
setConfigDirMethod.invoke(context, configDir, workspace);
Method method = instance.getClass().getMethod("initialize", context.getClass());
method.invoke(instance, context);
当我尝试像这样传递在容器中创建的上下文时
ComponentContextImpl c = new ComponentContext();
java.lang.IllegalArgumentException
由于另一个类加载器而失败。
这意味着我的容器依赖于 JAR 中的类,这让我抓狂。有没有办法将我自己的ComponentContext
(不是从 JAR 实例化的)传递给方法initialize
?
PS - JAR 是用assembly:single