首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NotSerializableException发生

NotSerializableException发生
EN

Stack Overflow用户
提问于 2012-06-02 16:10:14
回答 2查看 1.4K关注 0票数 2
代码语言:javascript
复制
public class move implements Serializable
{
    private static final long serialVersionUID = 6696031872468154516L;
    public move(int a,int b){
        x=a;
        y=b;
    }
    int x,y;
}

我通过ObjectOutputStream发送这个--仅仅使用out.writeObject(params);

当我看到LogCat时,它会说:

代码语言:javascript
复制
06-02 16:09:48.750: W/System.err(6060): java.io.NotSerializableException: com.SWAP.AndTablet.MainActivity
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
06-02 16:09:48.750: W/System.err(6060):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
06-02 16:09:48.754: W/System.err(6060):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
06-02 16:09:48.754: W/System.err(6060):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
06-02 16:09:48.754: W/System.err(6060):     at com.SWAP.AndTablet.MainActivity$MouseMoveSendTask.doInBackground(MainActivity.java:59)
06-02 16:09:48.754: W/System.err(6060):     at com.SWAP.AndTablet.MainActivity$MouseMoveSendTask.doInBackground(MainActivity.java:1)
06-02 16:09:48.754: W/System.err(6060):     at android.os.AsyncTask$2.call(AsyncTask.java:264)
06-02 16:09:48.754: W/System.err(6060):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-02 16:09:48.754: W/System.err(6060):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-02 16:09:48.754: W/System.err(6060):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-02 16:09:48.757: W/System.err(6060):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-02 16:09:48.757: W/System.err(6060):     at java.lang.Thread.run(Thread.java:856)

有谁可以帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-02 16:16:15

我怀疑这是一个嵌套类,这意味着存在对外部类的隐式引用,即使您不使用它。因此,如果您的类嵌套在MainActivity中,那么您最终将尝试序列化MainActivity的封闭实例,尽管您并不想这样做。MainActivity是不可序列化的(几乎可以肯定不应该序列化),这是导致错误的原因。

您可以通过将其设为静态来解决此问题:

代码语言:javascript
复制
public static class Move implements Serializable {
    private final int x, y;
    private static final long serialVersionUID = 6696031872468154516L;

    public Move(int a,int b) {
        x = a;
        y = b;
    }
}

如果它不是一个嵌套类,那么我怀疑问题不在于您向我们展示的代码。

票数 8
EN

Stack Overflow用户

发布于 2015-09-30 23:48:53

每当您收到java.io.NotSerializableException异常错误时。确保implements Serializable接口和“将变量定义为静态”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10860806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档