Я хочу использовать GUICE на стороне сервера с GWT 2.3 RequestFactory.У меня есть мой класс, который расширяет ServletModule с помощью:
@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>
, и у меня есть ссылка validation-api.XXX.jar(поскольку он является частью GWT)
Когда я запускаю его (в Eclipse с плагином GWT), он говорит:
jetty-6.1.x [WARN] fail guiceFilter: com.google.inject.ProvisionException: ошибки предоставления Guice:
1) Конструктор ошибок при внедрении, java.lang.NoClassDefFoundError: javax / validation / ValidationException на com.google.web.bindery.requestfactory.server.RequestFactoryServletServlet.Java: 74) на com.djay.eyeandtrack.server.EatServletModule.configureServlets (EatServletModule.java:13) при поиске com.google.web.bindery.requestfactory.server.RequestFactoryServlet
* 101N * Failed error 1запуск контекста com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@17b3de2 {/, C: \ 5_DJAY \ 03_EYEANDTRACK \ branch \ 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).djay.eyeandtrack.server.EatServletModule.configureServlets (EatServletModule.java:13) при поиске com.google.web.bindery.requestfactory.server.RequestFactoryServlet
1 ошибка в вводе Google.$ 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.ilitF.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.startConava: 40.jpgна org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1250) на org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java:517) на org.mortbay.jetty.weppart.(WebAppContext.java:467) на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) на org.mortbay.jetty.handler.HandlerWrapper.doStart (HandlerWrapper.java:130) на org.mortbay.componAbstractLifeCycle.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.wols.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) at 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:74b на com.g.bindery.requestfactory.server.RequestFactoryServlet $$ FastClassByGuice $$ 54253391.newInstance () в com.google.inject.internal.cglib.reflect. $ FastConstructor.newInstance (FastConstructor.java:40) в com.gternalinject.DefaultConstructionProxyFactory $ 1.newInstance (DefaultConstructionProxyFactory.java:60) в com.google.inject.internal.ConstructorInjector.construct (ConstructorInjector.java:85) в com.google.inject.internal.ConstructorBindingImpl $ Factory.get (ConstructorBindingImpl.j::)) на com.google.inject.internal.ProviderToInternalFactoryAdapter $ 1.call (ProviderToInternalFactoryAdapter.java:46) на com.google.inject.internal.InjectorImpl.callInContext (InjectorImpl.java:1031) на com.google.inject.TacInterFid..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.Classo.loadClass (неизвестный источник) ... еще 42
Возможно, я что-то упустил, но не знаю, где искать ... Спасибо