使用Guice注入GWT RequestFactory配置servletModule时出现问题
我想在服务器端将GUICE与GWT2.3 RequestFactory一起使用。 我的类通过以下方式扩展ServletModule:使用Guice注入GWT RequestFactory配置servletModule时出现问题,gwt,guice,requestfactory,guice-servlet,Gwt,Guice,Requestfactory,Guice Servlet,我想在服务器端将GUICE与GWT2.3 RequestFactory一起使用。 我的类通过以下方式扩展ServletModule: @Override public void configureServlets() { // RequestFactory servlet bind(RequestFactoryServlet.class).in(Singleton.class); serve("/gwtRequest").with(RequestFactoryServlet.clas
@Override
public void configureServlets() {
// RequestFactory servlet
bind(RequestFactoryServlet.class).in(Singleton.class);
serve("/gwtRequest").with(RequestFactoryServlet.class);
}
在web.xml中,我添加了:
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
guiceFilter
com.google.inject.servlet.GuiceFilter
guiceFilter
/*
我引用了validation-api.XXX.jar(因为它是GWT的一部分)
当我运行它时(在带有GWT插件的Eclipse下),它会说:
码头-6.1.x
[警告]失败的guiceFilter:com.google.inject.ProvisionException:Guice设置错误:
1) 注入构造函数java.lang.NoClassDefFoundError时出错:javax/validation/ValidationException
位于com.google.web.bindery.requestfactory.server.RequestFactoryServlet。(RequestFactoryServlet.java:74)
位于com.djay.eyeandtrack.server.EatServletModule.configureServlets(EatServletModule.java:13)
查找com.google.web.bindery.requestfactory.server.RequestFactoryServlet时
1错误
[警告]启动context com.google.apphosting.utils.jetty失败。DevAppEngineWebAppContext@17b3de2{/,C:\5\u DJAY\03\u EYEANDTRACK\branchs\djaysbox\EYEANDTRACK\war}
com.google.inject.ProvisionException:Guice设置错误:
1) 注入构造函数java.lang.NoClassDefFoundError时出错:javax/validation/ValidationException
位于com.google.web.bindery.requestfactory.server.RequestFactoryServlet。(RequestFactoryServlet.java:74)
位于com.djay.eyeandtrack.server.EatServletModule.configureServlets(EatServletModule.java:13)
查找com.google.web.bindery.requestfactory.server.RequestFactoryServlet时
1错误
位于com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:987)
位于com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
位于com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:108)
位于com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
位于com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
位于com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)
位于org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662)
位于org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
位于org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
位于org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.Server.doStart(Server.java:224)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186)
位于com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:157)
位于com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:169)
位于com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:119)
位于com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:500)
位于com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1055)
位于com.google.gwt.dev.DevModeBase.run(DevModeBase.java:804)
位于com.google.gwt.dev.DevMode.main(DevMode.java:309)
原因:java.lang.NoClassDefFoundError:javax/validation/ValidationException
位于com.google.web.bindery.requestfactory.server.ServiceLayer.create(ServiceLayer.java:74)
位于com.google.web.bindery.requestfactory.server.RequestFactoryServlet。(RequestFactoryServlet.java:88)
位于com.google.web.bindery.requestfactory.server.RequestFactoryServlet。(RequestFactoryServlet.java:74)
位于com.google.web.bindery.requestfactory.server.RequestFactoryServlet$$FastClassByGuice$$54253391.newInstance()
位于com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
位于com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:60)
位于com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
在com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:254)上
在com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
位于com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031)
位于com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
位于com.google.inject.Scopes$1$1.get(Scopes.java:65)
位于com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40)
在com.google.inject.internal.InjectorImpl$4$1.call上(InjectorImpl.java:978)
位于com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
位于com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
... 26多
原因:java.lang.ClassNotFoundException:javax.validation.ValidationException
位于java.net.URLClassLoader$1.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
位于java.lang.ClassLoader.loadClass(未知源)
... 42多