Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets Guice、Peaberry和ServletModule_Servlets_Osgi_Guice_Guice Servlet_Peaberry - Fatal编程技术网

Servlets Guice、Peaberry和ServletModule

Servlets Guice、Peaberry和ServletModule,servlets,osgi,guice,guice-servlet,peaberry,Servlets,Osgi,Guice,Guice Servlet,Peaberry,我在让Peaberry/Guice/OSGi/Servlets放置到尼斯时遇到了一个问题。首先,我已经将一个基于Jetty、部署了WAR的webapp迁移到OSGi,以利用插件架构。我最初的应用程序在任何地方都使用guice 我已经将所有内容分解成模块,并对构建进行了专业化。除了讨厌的ServletModule安装之外,一切似乎都在运行 尝试安装ServletModule时,我收到以下异常: java.lang.NoClassDefFoundError: com/google/inject/in

我在让Peaberry/Guice/OSGi/Servlets放置到尼斯时遇到了一个问题。首先,我已经将一个基于Jetty、部署了WAR的webapp迁移到OSGi,以利用插件架构。我最初的应用程序在任何地方都使用guice

我已经将所有内容分解成模块,并对构建进行了专业化。除了讨厌的ServletModule安装之外,一切似乎都在运行

尝试安装ServletModule时,我收到以下异常:

java.lang.NoClassDefFoundError: com/google/inject/internal/util/$Preconditions
    at com.google.inject.servlet.ServletModule.configure(ServletModule.java:44)
at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
at com.google.inject.AbstractModule.install(AbstractModule.java:118)
at com.payplum.CoreActivator$CoreImportModule.configure(CoreActivator.java:145)
at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
at com.google.inject.spi.Elements.getElements(Elements.java:101)
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
at com.google.inject.Guice.createInjector(Guice.java:95)
at com.google.inject.Guice.createInjector(Guice.java:72)
at com.google.inject.Guice.createInjector(Guice.java:62)
at com.payplum.CoreActivator.start(CoreActivator.java:53)
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
所以我不太清楚为什么找不到这些包。我已经添加了guice servlet依赖项,并验证了它是否正在进入我部署的包中

我想另一件重要的事情是注册GuiceFilter。我使用ServiceTracker获取ExtHttpService,就像我使用Jetty一样。当追踪器返回时,我使用典型调用添加并注册它

service.registerFilter( this.guiceFilter, "/*", null, 0, null );
这似乎很有效。我真的很努力让这些东西工作,我有点被困在Guice/OSGI/ PeabRRY部分之间。非常感谢您的帮助


谢谢

异常意味着您在类路径上缺少一个类,因此您要么缺少一个jar,要么其中一个jar(令人惊讶地)没有包含它所需的类。检查包含在最终war文件中的jar,例如,使用“
jar-tf thejar.jar
”检查它们是否包含$Premissions类。

异常意味着您在类路径上缺少一个类,因此您要么缺少一个jar,要么其中一个jar(令人惊讶地)没有包含所需的类。检查您的最终war文件中包含的jar,例如,使用“
jar-tf thejar.jar
”检查它们是否包含$Premissions类。

,因此我永远无法理解这一点。基本上,我认为存在某种可见性问题。为了解决这个问题,我必须通过在felix/conf文件的config.properties文件中添加:
org.osgi.framework.system.packages.extra=com.google.inject.servlet
将Guice库添加到felix根目录中。它解决了这个问题,但我不太确定如何/为什么。所以我永远无法弄明白这一点。基本上,我认为存在某种可见性问题。为了解决这个问题,我必须通过在felix/conf文件的config.properties文件中添加:
org.osgi.framework.system.packages.extra=com.google.inject.servlet
将Guice库添加到felix根目录中。它解决了这个问题,但我不太确定如何/为什么。