Google Guice 3和OSGi(Eclipse equinox)问题,

时间:2011-08-22 20:07:03

标签: eclipse osgi guice

我在OSGi容器中运行Guice 3时遇到问题。 以下是我编写的一个简单测试,用于测试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 Jars的目标,为了让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 个答案:

答案 0 :(得分:1)

啊,在发布问题之后我找到了问题的根源。我没有在测试包的Import-Packages中指定有问题的类所在的com.google.inject.binder包。虽然模块不直接导入该包,但它看起来仍然需要指定所有间接依赖包。