gpt4 book ai didi

java - 将对象传递给 JCL 加载的类

转载 作者:行者123 更新时间:2023-12-01 04:16:29 27 4
gpt4 key购买 nike

我有一个非常棘手的问题。我有一种容器,可以使用具有类 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 是用 assemble:single 组装的

最佳答案

解决方法是将共享库标记为提供

关于java - 将对象传递给 JCL 加载的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com