NoClassDefFoundError:从Eclipse运行GWT + GAE时的GuiceServletContextListener

Séb*_*omp 6 eclipse gwt google-app-engine guice

当我尝试从Eclipse运行我的项目作为WebApplication时,我有以下错误:

[WARN] failed com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@4b903fd{/,D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1}: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] failed JettyContainerService$ApiProxyHandler@eb4d977: java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
[WARN] Error starting handlers
java.lang.NoClassDefFoundError: com/google/inject/servlet/GuiceServletContextListener
Run Code Online (Sandbox Code Playgroud)

该类可以在编译时找到(我的自定义GuiceServletConfig扩展GuiceServletContextListener并正确编译).

guice-servlet-3.0.jar库既出现在项目构建路径中,也出现在Eclipse中的Web应用程序运行配置的类路径中.

我的运行配置的Arguments面板具有以下配置:在Program参数中:

-remoteUI "${gwt_remote_ui_server_port}:${unique_id}" -startupUrl TheFiveOrbs.jsp -logLevel INFO -server com.google.appengine.tools.development.gwt.AppEngineLauncher -port 8888 -codeServerPort 9997 -war "D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1" com.fiveorbs.TheFiveOrbs
Run Code Online (Sandbox Code Playgroud)

在VM参数中:

-javaagent:D:\Dev\Programs\appengine-java-sdk\lib\agent\appengine-agent.jar -Xmx512m -Dappengine.sdk.root=D:\Dev\Programs\appengine-java-sdk
Run Code Online (Sandbox Code Playgroud)

当我运行mvn gae:从Maven的命令提示符运行时,一切都很好 - 服务器正常启动并且没有显示异常.

我一直在努力解决这个问题几个小时,实在无法理解它为什么会发生.

提前感谢您提供的任何提示.

塞巴斯蒂安

Tho*_*yer 5

guice-servlet-3.0.jar应该不是在你启动配置类路径,它应该活出你的D:\Dev\Projects\The Five Orbs\trunk\target\fiveorbs-0.1\WEB-INF\lib文件夹中.

  • 你是如何实现这一目标的?我在我的类路径中将`guice-servlet-3.0.jar`作为Maven依赖,因此它不会进入Eclipse内的`WEB-INF/lib`; 只有GAE SDK依赖项才有.我的WAR目录设置为`src/main/webapp`(在那里,有`WEB-INF /`),我不想从Maven的`target /`运行我的应用程序,因为这需要运行`mvn package`首先. (3认同)