我想在服務器端使用GWICE 2.3 RequestFactory的GUICE。 我有我的課與擴展的servlet:使用Guice注入GWT來配置servletModule的問題RequestFactory
@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>
和我所引用的驗證,api.XXX.jar(因爲它是GWT的一部分)
當我與GWT插件運行它(Eclipse中下),它說:
碼頭-6.1.x [WARN]失敗guiceFilte R:com.google.inject.ProvisionException:吉斯提供錯誤:
1)錯誤注入構造,java.lang.NoClassDefFoundError:在的javax /驗證/ 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錯誤 [WARN]上下文啓動失敗[email protected]de2 {/,C:\ 5_DJAY \ 03_EYEANDTRACK \ branches \ djaysbox \ EyeAndTrack \ war} com.google.inject.ProvisionException:吉斯提供錯誤:
1)錯誤注入構造,java.lang.NoClassDefFoundError:的javax /驗證/ 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) at com.google.inject.internal.InjectorImpl.getInstance(Inj ectorImpl.java:1009) 在com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:108) 在com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82) 在融爲一體。 google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102) at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172) at org.mortbay.jetty.servlet.FilterHolder.doStart( FilterHolder.java:97) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:662) at org.mortbay。 jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContex t(WebAppContext.java:1250) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle。 java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server。java:224) at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:186) (位於org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) )。 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) at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:500) at 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 at 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() at com.google.inject.internal.cglib.reflect。$ FastConstructor.newInstance(FastConstructor.java:40) at 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) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java: 40) at com.google.inject.Scopes $ 1 $ 1.get(Scopes.java:65) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at com.google.inject。 internal.InjectorImpl $ 4 $ 1.call(InjectorImpl.java:978) at com.goog le.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) at com.google.inject.internal.InjectorImpl $ 4.get(InjectorImpl.java:974) ... 26更多 引起來自:java.lang .ClassNotFoundException:在java.net.URLClassLoader的$ 1.run(來源不明)javax.validation.ValidationException 在java.security.AccessController.doPrivileged(本機方法) 在java.net.URLClassLoader.findClass(來源不明) 在java.lang.ClassLoader.loadClass(Unknown Source) at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) at java.lang.ClassLoader.loadClass(Unknown Source) ... 42更多
我可能失去了一些東西,但我不knwo哪裏找...... 感謝
的Merci托馬斯,就像這更好的。 現在我有消息無法初始化這是在你的博客中提到一個JSR 303的Bean驗證 。 但我不知道理解爲什麼我必須手動從GWT SDK將這些文件複製到lib文件夾?我不這樣做的gwt-user.jar文件,它適用於RequestFactory。 – Gerald 2011-05-27 02:59:31
因爲有gwt-servlet.jar(是的,GPE負責複製它)。如果你不使用Maven,那麼GPE也應該拷貝包含'javax.validation' API的gwt-servlet-deps.jar。 – 2011-05-27 08:03:47