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 进行部署。我正在使用:
- Eclipse 版本:Oxygen.3 发布 (4.7.3)
- Google 云工具 SDK 194.0.0
- 应用引擎 1.9.63
谢谢!
更新:
下面是一些简单的测试代码:
@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
我只在生产环境中遇到这个错误 - 开发服务器工作正常。
我的应用程序的旧版本在生产中也能正常工作 - 但每次我进行新部署时,我在访问我的应用程序时都会收到此错误。 我尝试重新编译抛出错误的特定 class 并更改代码,但仍然没有成功。
我不太确定,但我想这与部署过程本身有关。我正在从 Eclipse 进行部署。我正在使用:
- Eclipse 版本:Oxygen.3 发布 (4.7.3)
- Google 云工具 SDK 194.0.0
- 应用引擎 1.9.63
谢谢!
更新:
下面是一些简单的测试代码:
@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