Can';你不再在谷歌应用程序引擎(Java)中使用JSONObject了吗?
半小时前,我打开Eclipse编辑了一个Google应用程序引擎应用程序,以前一切都很好,没有错误,我没有更新任何东西(至少不是故意的) 我已经导入:Can';你不再在谷歌应用程序引擎(Java)中使用JSONObject了吗?,java,google-app-engine,Java,Google App Engine,半小时前,我打开Eclipse编辑了一个Google应用程序引擎应用程序,以前一切都很好,没有错误,我没有更新任何东西(至少不是故意的) 我已经导入:com.google.appengine.repacked.org.json.JSONObject 没有错误,但是现在我得到了这个错误: 使用com.google.appengine.repacked可能会导致您的应用程序在没有警告的情况下中断 它以前从来没有坏过,它是为Eclipse下载谷歌应用程序引擎而来的,为什么它现在突然启动了呢?我怎样才能
com.google.appengine.repacked.org.json.JSONObject
没有错误,但是现在我得到了这个错误:
使用com.google.appengine.repacked可能会导致您的应用程序在没有警告的情况下中断
它以前从来没有坏过,它是为Eclipse下载谷歌应用程序引擎而来的,为什么它现在突然启动了呢?我怎样才能摆脱它呢?(我所做的更改非常小而且很快,不必使用不同的JSON库就好了)
com.google.appengine.repacked.
包含应用程序代码不应使用的内部类
例如,
org.json
由实现。只需在GAE项目中包含其中一个即可。如果您不想从第一原则中完全理解这一点,请按以下步骤进行:
com.google.appengine.labs.repacked.org.json.JSONObject为了避免使用com.google.appengine.repacked可能会导致应用程序在没有警告的情况下中断。错误简单用完整包名声明类。它解决了你的问题
com.google.appengine.repackaged.com.google.gson.JsonObject jsonObject =
new com.google.appengine.repackaged.com.google.gson.JsonObject();
将导入更改为com.google.gson.gson对我很有效。Packagecom.google.appengine.repackaged.com.google.gson在最新的appengine版本中已被弃用。因此,有以下声明:
import com.google.appengine.repackaged.com.google.gson.Gson;
import com.google.appengine.repackaged.com.google.gson.GsonBuilder;
...
Gson gson = new GsonBuilder().create();
您是否会在AppGenEngine日志中显示以下错误:
java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/gson/JsonElement
您需要改用新的Json库:
1) 将新的依赖项添加到gradle文件:
compile 'com.google.code.gson:gson:2.8.1'
2) 替换
与
您拥有的GAE版本似乎不支持重新打包,您可能需要尝试另一个受支持的JSonObject API。@ThinkStip,据我所知,我还没有更改版本,如何使它支持它?下面是一些可能有用的讨论。@ThinkStip,是的,我看到了,它是针对base64的。我在google群组列表上发布了一个类似的问题,但对于另一个jar,请参阅。实际上,该应用程序在部署后运行良好。建议不错,但别忘了将该文件夹添加到“生成属性”下的“源代码”中。我没有收到关于使用此包中提供的JSONObject的任何警告。它是否也可能被修改或删除?
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;