我们的 Android 应用程序有一个仅包含与 Android 解耦的纯 Java 代码的包。我需要在这个包中使用 JSON,并尝试导入官方 JSON 库。虽然导入成功,并且我可以在代码中使用 JSON,但它不起作用。我经常遇到同样的异常:
java.lang.NoSuchMethodError:没有静态方法 g(Ljava/lang/String;)Ljava/lang/Object; 在类 Lorg/json/JSONObject 中;或其超类(“org.json.JSONObject”的声明出现在 /system/framework/core-libart.jar 中)
No virtual method b()Z in class Lorg/json/JSONObject; or its super classes (declaration of 'org.json.JSONObject' appears in /system/framework/core-libart.jar)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我会得到这个。我读到,这是由于与 Android 包含的 JSON 库发生冲突,但这仅在纯 Java 库中使用,与 Android 的任何代码交互都涉及字符串或长整型,而不是 JSON
有人经历过这个吗?或者对如何在这个纯 java 包中使用 JSON 有什么建议吗?
我尝试导入一个非常旧版本的 JSON 库,以防它是由于某种冲突而导致我使用较新的方法,但没有骰子。同样的错误。还尝试导入 jar 而不是使用 gradle。
这用于 ORMLITE 中数据库的简单 getter 和 setter。下面是一个示例,其中 mExtraFlag 是一个字符串。也会引起问题的方法是 JSONObject 中的 toString 以及以下方法:valueToString、StringToValue 等...
public JSONObject getExtraFlag() {
return new JSONObject(mExtraFlag);
}
Run Code Online (Sandbox Code Playgroud)