【问题标题】:NoClassDefFoundError: GuiceServletContextListener when running GWT + GAE from EclipseNoClassDefFoundError:从 Eclipse 运行 GWT + GAE 时的 GuiceServletContextListener
【发布时间】:2011-09-27 23:10:33
【问题描述】:

当尝试从 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

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

guice-servlet-3.0.jar 库同时出现在项目构建路径和我在 Eclipse 中的 Web 应用程序运行配置的类路径中。

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

-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

在虚拟机参数中:

-javaagent:D:\Dev\Programs\appengine-java-sdk\lib\agent\appengine-agent.jar -Xmx512m -Dappengine.sdk.root=D:\Dev\Programs\appengine-java-sdk

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

我已经为这个问题苦苦挣扎了几个小时,真的无法理解为什么会发生。

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

塞巴斯蒂安

【问题讨论】:

    标签: eclipse google-app-engine gwt guice


    【解决方案1】:

    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
    • 然而,这就是 Maven 的工作原理! (直到 gwt-maven-plugin 以某种方式修复)。老实说,您只需要在更改依赖项时运行mvn package -Dgwt.compiler.skip,这实际上并不常见。另一种方法是不使用嵌入式服务器并使用mvn appengine:devserver(或mvn jetty:runmvn tomcat7:run,当您不使用GAE时)以及在-noserver模式下运行GWT DevMode。
    • 您能否更清楚地解释一下您究竟为非 Maven 专家做了什么?
    • 我只在 pom.xml 中看到 guice-servlet:com.google.inject.extensionsguice-servlet 4.0 怎么办?
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多