1

gwt2.4rc1 アプリケーションを tomcat で実行する際に問題があります。この問題は、requestfactory 呼び出しを実行しようとすると発生します。次に、一番下に例外が発生します。

GWT を開発モードで実行すると、すべて正常に動作します。gwt-dev. jar は、webapp の lib フォルダーにあります。依存関係管理にmavenを使用しています。構成に問題がある可能性はありますか? gwt2.4 beta で既にエラーが発生しました。この問題を解決するために必要な情報が他にある場合は、喜んで提供します。

よろしく、アルネ

SEVERE: 予期しないエラー com.google.web.bindery.requestfactory.server.UnexpectedException: com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.die(ServiceLayerDecorator.java:216) での予期しないチェック例外 com.google.web .bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:242) com.google.web.bindery.requestfactory.server.ServiceLayerCache.resolveRequestFactory(ServiceLayerCache.java:198) で com.google.web.bindery.requestfactory .server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:201) com.google.web.bindery.requestfactory.server.SimpleRequestProcessor.process(SimpleRequestProcessor.java:125) com.google.web.bindery.requestfactory.server.RequestFactoryServlet で.doPost(RequestFactoryServlet.java:133) javax.servlet.http.HttpServlet で。サービス (HttpServlet.java:641) で javax.servlet.http.HttpServlet.service(HttpServlet.java:722) com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:261) で com.google.inject .servlet.ServletDefinition.service(ServletDefinition.java:175) com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) で com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) ) org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) で org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) で org.apache.shiro. com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:162) の web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) com.google.inject.servlet.com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) の FilterChainInvocation.doFilter(FilterChainInvocation.java:58) 組織の com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve) .java:240) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:203) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) org.apache.catalina. org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) で org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379) で org.apache.coyote.http11 .Http11Processor.process(Http11Processor.java:242) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint) .java:281) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) で java.lang.Thread.run( Thread.java:636) 原因: java.lang.NoClassDefFoundError: com/google/gwt/dev/util/StringKey at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2804) at org.apache.catalina.loader .WebappClassLoader.findClass(WebappClassLoader.java:1144) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1639) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateProxy(RequestFactoryInterfaceValidator.java:1594) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateEntityProxy(RequestFactoryInterfaceValidator.java:828) web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.maybeCheckProxyType(RequestFactoryInterfaceValidator.java:1540) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.getDomainType(RequestFactoryInterfaceValidator.java:1374) で com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.createDomainMethod( RequestFactoryInterfaceValidator.java:1192) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.checkClientMethodInDomain(RequestFactoryInterfaceValidator.java:1079) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateRequestContext(RequestFactoryInterfaceValidator.java: 909) com.google.web.bindery.requestfactory.server.RequestFactoryInterfaceValidator.validateRequestFactory(RequestFactoryInterfaceValidator.java:964) で com.google.web.bindery.requestfactory.server.ResolverServiceLayer.resolveRequestFactory(ResolverServiceLayer.java:187) com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) com.google.web. com.google.web.bindery.requestfactory.server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) の com.google.web.bindery.requestfactory. server.ServiceLayerDecorator.resolveRequestFactory(ServiceLayerDecorator.java:172) の sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) の sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) の sun.reflect.DelegatingMethodAccessorImpl.com.google.web.bindery.requestfactory.server.ServiceLayerCache.getOrCache(ServiceLayerCache.java:233) で java.lang.reflect.Method.invoke(Method.java:616) で呼び出し (DelegatingMethodAccessorImpl.java:43) .. . 32 以上 原因: java.lang.ClassNotFoundException: com.google.gwt.dev.util.StringKey at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672) at org.apache.catalina.loader .WebappClassLoader.loadClass(WebappClassLoader.java:1517) ... 57 もっと見る1672) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517) ... 57 詳細1672) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517) ... 57 詳細

4

3 に答える 3

2

RCからトランクへの途中でこれに対する修正があります。それまでの間、依存関係からgwt-servletを削除し、代わりにrequestfactory-servlet.jarを使用してください。

于 2011-07-12T17:48:09.427 に答える
0

私は常にgwt-dev.jarがコンパイラーやその他の開発ツールであることを理解してきました。それを信じるなら、あなた自身のコードからそれに依存するべきではなく、それがあなたのwarファイルのWEB-INF/libフォルダーにある理由はありません。

この質問から、SOへの他の少なくとも1人の貢献者が同じように感じていることがわかりますが、その信念は普遍的ではないようです。

GWTドキュメントで何らかの方法で何かを見つけることができたら、この回答を更新します。

更新: 私が見つけた最も近いものは、プロジェクトの整理でした。これは、WEB-INF/libに存在しない参照ライブラリとしてgwt-devを示しています。Webサーバーにデプロイできるかできないかを示す公式なものは見つかりません。古い本GWTInAction(Hanson、2007)の中で、551ページには次のように書かれています。

gwt-user.jarファイルとgwt-dev.jarファイルはサーバーに干渉するため、サーバーにデプロイしないでください。これらのJARファイルには、ホストモードでテストするときに使用される独自のTomcatサーバーコードが含まれています。

ホストモードはもはやそれとは呼ばれず、Tomcatではなく組み込みのJettyサーバーを使用するため、これは明らかに時代遅れですが、それが私の信念の基礎です。

于 2011-07-12T17:42:59.943 に答える
0

OK、私はそれを機能させました:)私はここからコンパイルされたgwtバージョンを使用しました: http://code.google.com/p/google-web-toolkit/source/browse/#svn%2Freleases%2F2.4

プロジェクトの依存関係として gwt-servlet.jar と requestfactory-servlet.jar を入れました。他のスレッドの問題は、コンパイルされた jar に独自のグループ ID を使用したために発生したため、これらは gin および gwt-maven-plugin では使用されませんでした。いいえ、すべて正常に動作します:)

でも助けてくれてありがとう!!

于 2011-07-13T00:44:39.973 に答える