Google App Engine: java.lang.NoClassDefFoundError: com/google/appengine/api/datastore/Query$Filter

Google App Engine: java.lang.NoClassDefFoundError: com/google/appengine/api/datastore/Query$Filter

我只在生产环境中遇到这个错误 - 开发服务器工作正常。

我的应用程序的旧版本在生产中也能正常工作 - 但每次我进行新部署时,我在访问我的应用程序时都会收到此错误。 我尝试重新编译抛出错误的特定 class 并更改代码,但仍然没有成功。

我不太确定,但我想这与部署过程本身有关。我正在从 Eclipse 进行部署。我正在使用:

谢谢!

更新:

下面是一些简单的测试代码:

@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/plain");
    res.setCharacterEncoding("UTF-8");

    // this throws: java.lang.NoClassDefFoundError - only in PRODUCTION
    Query.Filter filter = Query.FilterOperator.EQUAL.of("name", null);

    res.getWriter().print("Hello App Engine: " + filter);
}

这在生产中失败,但在开发服务器上有效!

更新二: 用 Google 打开了一个问题:https://issuetracker.google.com/issues/76144204

这是一个 Google 问题,目前正在调查中: https://issuetracker.google.com/issues/76144204

目前的解决方法是将 appengine-api-1.0-sdk-1.9.63.jar 文件复制到 WEB-INF/lib 目录中,如评论中所述: https://issuetracker.google.com/issues/76144204#comment45