2013-10-14 3 views
1

У меня действительно сложная проблема. У меня есть контейнер, который может запускать пользовательский JAR с помощью метода, который имеет класс ComponentContext в качестве параметра. После загрузки я хочу вызвать этот метод с отражением, но есть проблема - я должен использовать тот же загрузчик классов (JCL в этом случае), чтобы создать ComponentContext. Смотрите код:Передача объекта в класс, загруженный 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

ответ

0

решаемые в качестве маркировки совместно библиотеку как provided

Смежные вопросы