java - 升级到 Java8 和端点 V2 后 AppEngine 出现错误

标签 java json google-app-engine java-8 upgrade

升级到 Java 8 并将端点升级到 V2 后,我不断收到服务器错误,并在我的 appengine 日志中收到以下错误:

com.google.apphosting.runtime.jetty9.JettyLogger warn: Error xxxxxxxxx (JettyLogger.java:29)
    java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/gson/JsonElement
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2673)
        at java.lang.Class.getConstructor0(Class.java:3077)
        at java.lang.Class.newInstance(Class.java:413)

最佳答案

事实证明,这是因为作为应用引擎升级的一部分,以下语句不再有效

import com.google.appengine.repackaged.com.google.gson.Gson;
import com.google.appengine.repackaged.com.google.gson.GsonBuilder;
...
Gson gson = new GsonBuilder().create();

您需要使用新的 Json 库:

1) 将新的依赖项添加到您的 gradle 文件中:

compile 'com.google.code.gson:gson:2.8.1' 

2)替换

import com.google.appengine.repackaged.com.google.gson.Gson;
import com.google.appengine.repackaged.com.google.gson.GsonBuilder;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder; 

关于java - 升级到 Java8 和端点 V2 后 AppEngine 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734912/

相关文章:

python - 使用谷歌应用引擎(Python)查询多个表

Java 事务 API (JTA) 概述帮助

java - catalina.out Tomcat9 中的奇怪输出

c++ - 是否可以在 C 或 C++ 中基于 JSON 动态创建 if 语句

ios - 从 MySQL 数据库导入 iOS 应用程序中的数据

google-app-engine - 将 Web 应用程序部署到 travis-ci 上的 google app engine - travis 要求输入密码

google-app-engine - 如何在 App Engine 上实现服务器亲和性或粘性 session ?

Java异常处理——捕捉父类(super class)异常

java - 清除特定的数组列表而不是它的所有副本

JavaScript float 数据