Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了标准Android运行时对象上的NoMethodError大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Heya,我得到一个非常奇怪的@L_607_1@,我试图在所有Android平台上从1.5到2.2(在手机和模拟器上)将对象序列化为JSON时无法理清.

我收到此@L_607_1@:

E/AndroidRuntime(21017): Uncaught handler: thread AsyncTask #2 exiTing due to uncaught exception
E/AndroidRuntime(21017): java.lang.RuntimeException: An error occured while execuTing doInBACkground()
E/AndroidRuntime(21017):    at android.os.AsyncTask$3.done(AsyncTask.java:200)
E/AndroidRuntime(21017):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
E/AndroidRuntime(21017):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
E/AndroidRuntime(21017):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
E/AndroidRuntime(21017):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
E/AndroidRuntime(21017):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
E/AndroidRuntime(21017):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
E/AndroidRuntime(21017):    at java.lang.Thread.run(Thread.java:1096)
E/AndroidRuntime(21017): Caused by: java.lang.NoSuchMethodError: org.json.JSONStringer.object
E/AndroidRuntime(21017):    at com.qype.radar.api.json.JsonserializationHelper.startModel(JsonserializationHelper.java:119)
E/AndroidRuntime(21017):    at com.qype.radar.api.json.JsonserializationHelper.serializecheckin(JsonserializationHelper.java:94)
E/AndroidRuntime(21017):    at com.qype.radar.api.QypeApiImpl.submitcheckin(QypeApiImpl.java:157)
E/AndroidRuntime(21017):    at com.qype.radar.activities.tasks.SubmitcheckinTask.docheckedInBACkground(SubmitcheckinTask.java:29)
E/AndroidRuntime(21017):    at com.qype.radar.activities.tasks.SubmitcheckinTask.docheckedInBACkground(SubmitcheckinTask.java:1)
E/AndroidRuntime(21017):    at com.github.droidfu.concurrent.betterAsyncTask.doInBACkground(BetterAsyncTask.java:154)
E/AndroidRuntime(21017):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
E/AndroidRuntime(21017):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
E/AndroidRuntime(21017):    ... 4 more

当在此代码中序列化评论时从’startModel()’到达’Stringer.object’行时:

package com.qype.radar.api.json;

import org.json.JSONException;
import org.json.JSONStringer;

import com.qype.radar.model.Review;

public class JsonserializationHelper {

    private JSONStringer Stringer = new JSONStringer();

    ...

    public String serializeReview(Review review) throws JSONException {

        startModel("review");

        value("rating",review.getrating());
        value("language",review.getLanguage());
        value("content",review.getText());

        return endModel();
    }

    ...

    private JSONStringer startModel(String Name) throws JSONException {
        Stringer.object();
        Stringer.key(Name);
        Stringer.object();
        return Stringer;
    }

    private String endModel() throws JSONException {
        Stringer.endObject();
        Stringer.endObject();
        return Stringer.toString();
    }

    private void value(String key,String value) throws JSONException {
        Stringer.key(key);
        Stringer.value(value);
    }

    private void value(String key,int value) throws JSONException {
        Stringer.key(key);
        Stringer.value(value);
    }
}

关于这一点最奇怪的是代码编译很好,并且在调试时,JSONStringer对象被实例化为ok,但是对它的任何调用都会抛出此@L_607_1@.我也能够使用Java的反射发现该类确实存在,并且我可以从类对象中检索的方法都存在,并且可以无@L_607_1@地调用.

org.json包是Android中的标准,自API版本1起可用.

任何帮助解决这个问题将不胜感激,因为我根本不知道在哪里看.

最佳答案
原来这是来自Maven Central的Android JAR的一个问题.它依赖于JSON JAR,但是它们在Maven Central上被破坏(JSONStringer类是空的,只定义了toString()方法).

如果你也在使用Maven,你可以通过使用maven-android-sdk-deployer部署SDK的android jar并从那里开始来解决这个问题.

this thread

大佬总结

以上是大佬教程为你收集整理的标准Android运行时对象上的NoMethodError全部内容,希望文章能够帮你解决标准Android运行时对象上的NoMethodError所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。