不能再使用Google App Engine(Java)中的JSONObject了吗?

时间:2012-01-03 15:48:50

标签: java google-app-engine

半小时前我打开Eclipse编辑一个Google App Engine应用程序,以前一切正常,没有错误,我没有更新任何内容(至少不知情)。

我已导入:com.google.appengine.repackaged.org.json.JSONObject 没有错误,但是现在我收到了这个错误:

use of com.google.appengine.repackaged may result in your app breaking without warning

以前从未打破过,它附带了Eclipse的Google App Engine下载,为什么它现在突然开始?我怎么能摆脱它呢? (他们所做的改变非常小而且很快,不必使用不同的JSON库会很好)

6 个答案:

答案 0 :(得分:8)

com.google.appengine.repackaged.*包含应用程序代码不应使用的内部类。

org.jsonmany libraries实施,例如JSON-Java。只需在GAE项目中包含其中一个。

答案 1 :(得分:4)

AppEngine 1.8.4使用

com.google.appengine.labs.repackaged.org.json.JSONObject

答案 2 :(得分:2)

如果你不想从第一原则中弄清楚这一点,这里是一步一步:

  1. https://github.com/douglascrockford/JSON-java获取来源(您可以下载zip,使用Git等)
  2. 在项目json / org / json中创建一个目录并将源代码放在那里。
  3. 在Eclipse中使用“Refresh”,以便它查看并编译目录。
  4. 更改所有“import com.google.appengine.repackaged.org.json.xxx;” “import org.json.xxx;”在你的代码中
  5. 不幸的是,这增加了许多警告,但它们似乎确实无害。

答案 3 :(得分:2)

要摆脱使用com.google.appengine.repackaged可能会导致您的应用无法发出警告。错误简单地使用完整包名称声明您的课程。它解决了你的问题。

com.google.appengine.repackaged.com.google.gson.JsonObject jsonObject = 
new com.google.appengine.repackaged.com.google.gson.JsonObject();

答案 4 :(得分:0)

将我的导入更改为com.google.gson.Gson对我有用。

答案 5 :(得分:0)

在最新的appengine版本中已弃用

com.google.appengine.repackaged.com.google.gson 。因此,以下语句

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

您会在appgengine日志中给您以下错误吗?

java.lang.NoClassDefFoundError: com/google/appengine/repackaged/com/google/gson/JsonElement

您需要改用新的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;