Проблема с Google Guice 3 и OSGi (Eclipse equinox), - PullRequest
3 голосов
/ 23 августа 2011

У меня проблемы с запуском Guice 3 в контейнере OSGi.Ниже приведен простой тест, который я написал, чтобы проверить, хорошо ли работает Guice с OSGi.

Простой модуль guice, такой как:

public class Module extends AbstractModule {
    @Override
    protected void configure() {
    bind(IInterface.class).to(IImplement.class);
    }
}

И IInterface, и IImplement очень тривиальны.

Активатор OSGi выглядит следующим образом:

 public void start(BundleContext bundleContext) throws Exception {
        Activator.context = bundleContext;
        Injector inj = Guice.createInjector(new Module());
        IInterface e = inj.getInstance(IInterface.class);
        e.sayHello();
  }

В Eclipse я создал цель, содержащую все баночки Guice, и для того, чтобы guice разрешился сам, я сделал два дополнительных пакета для aopalliance.jar и javax.injector.jar

Однако этот простой тест не может загрузить комплект тестов, выдает сообщение об ошибке с жалобой, что не удается найти класс guice:

  Exception in guicetest.Activator.start() of bundle guicetest
  Caused by: java.lang.NoClassDefFoundError:   com/google/inject/binder/AnnotatedBindingBuilder
at guicetest.guice.Module.configure(Module.java:11)

Надеюсь, я сделалпроблема ясна.Может кто-нибудь показать мне, как решить эту проблему?

1 Ответ

1 голос
/ 24 мая 2012

Ах, после публикации вопроса я нашел корень проблемы.Я не указал пакет com.google.inject.binder, в котором находится проблемный класс, в пакетах импорта тестового пакета.Хотя модуль не импортирует этот пакет напрямую, он, похоже, все же должен указать все косвенные зависимые пакеты.

...