1
정말 까다로운 문제가 있습니다. 클래스로 ComponentContext
매개 변수로있는 메서드를 사용하여 사용자 지정 JAR을 실행할 수있는 컨테이너가 좀 있습니다. 로드 후에는 리플렉션을 사용하여이 메서드를 호출하고 싶지만 문제가 있습니다. ComponentContext
을 만들려면 동일한 클래스 로더 (이 경우 JCL)를 사용해야합니다.JCL 로딩 된 클래스에 객체 전달
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