App Engine java.lang.NoClassDefFoundError:com / google / api / server / spi / guice / GuiceSystemServiceServletModule

时间:2016-06-09 15:14:40

标签: java google-app-engine

我想将一些小东西更改为我的App引擎后端,但我无法将其上传到Appengine Google Cloud。所以我将appengine sdk的版本更新到版本1.9.21(就像在另一个仍然更新的项目中一样)。

现在我在运行项目时遇到以下错误:

java.lang.NoClassDefFoundError: com/google/api/server/spi/guice/GuiceSystemServiceServletModule

当我部署它时,我总是得到这个错误:

java.lang.NoClassDefFoundError: nl/mynamespace/guice/FDGuiceSystemServiceServletModule

此类应包含在com.google.appengine中:appengine-endpoints:1.9.22 有什么不对?

奇怪的是,我在Guice部分没有任何改变,而在另一个项目中,它的工作方式相同...

FDGuiceServletContextListener.java:

public class FDGuiceServletContextListener extends GuiceServletContextListener {

    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new     FDGuiceSystemServiceServletModule());
    }
}

FDGuiceSystemServiceServletModule.java

public class FDGuiceSystemServiceServletModule extends GuiceSystemServiceServletModule {

    @Override
    protected void configureServlets() {
        super.configureServlets();

        Set<Class<?>> serviceClasses = new HashSet<>();
        serviceClasses.add(DashboardApi.class);
        serviceClasses.add(SalesAPI.class);
        serviceClasses.add(LeadsApi.class);

        serveGuiceSystemServiceServlet("/_ah/spi/*", serviceClasses);
    }
}

的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>/_ah/spi/*</url-pattern> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>nl.mynamespace.guice.FDGuiceServletContextListener</listener-class> </listener> [..]

1 个答案:

答案 0 :(得分:0)

抱歉,我是Intellj / Maven构建系统的新手。我不得不从项目结构中删除库 - &gt;文物 - &gt;输出布局 - &gt; WEB-INF \ lib并再次添加它们。

我习惯于Gradle和Android开发,我只需要更改gradle文件。

我仍然不明白为什么必须在2个地方配置,但现在我永远不会忘记这一点。