Java 在这个可序列化的尝试中,我做错了什么

Java 在这个可序列化的尝试中,我做错了什么,java,serialization,Java,Serialization,我正在尝试存储一些对象,以便将来在网络出现故障时进行处理。 我在一个可序列化的类中有一个NameValuePairs数组。。。我已经排除了所有其他的,但我仍然得到一个不可序列化的例外。。。我以前从未尝试将可序列化对象写入文件。。。我肯定我在做傻事,但我看不出是什么 public void store(){ FileOutputStream fos = null; ObjectOutputStream out = null; try {

我正在尝试存储一些对象,以便将来在网络出现故障时进行处理。 我在一个可序列化的类中有一个NameValuePairs数组。。。我已经排除了所有其他的,但我仍然得到一个不可序列化的例外。。。我以前从未尝试将可序列化对象写入文件。。。我肯定我在做傻事,但我看不出是什么

public void store(){
    FileOutputStream fos = null;
    ObjectOutputStream out = null;          
    try {
        Log.d(TAG, "Upload failed, saving file to " + path + "/" + fileName);
        File f = new File(path);
        if(!f.exists()){
            try{
            (new File(path)).mkdirs();
            }catch(Exception e){
                Log.d(TAG, "failed to create directory " + path );
            }
        }
        f = new File(path + "/" + fileName);
        fos = new FileOutputStream(f);
        out = new ObjectOutputStream(fos);
        Parts p = new Parts(parts);
        out.writeObject(p); //THIS IS THE LINE WHERE IT DIES WITH THAT EXCEPTION
        out.flush();
        out.close();
    } catch (IOException e) {
        Log.d(TAG, "FAILED TO SAVE file: " + path + "/" + fileName );
        Log.d(TAG, "error:" + e);
    }   catch(Exception e){     
        Log.d(TAG, "error:" + e);
    }
}

private class Parts implements Serializable{        
    private static final long serialVersionUID = -7603433209073871781L;
    @SuppressWarnings("unused")
    public NameValuePair [] p;
    public Parts(NameValuePair [] parts){
        this.p = parts;
    }       
}

如果对象实现了
serializable
,并且其所有非瞬态和非静态字段都是可序列化的,则该对象是可序列化的。您的
NameValuePair
是否可序列化


跟进:查看,
NameValuePair
实现了
Serializable
。另外,
String[]
是可序列化的。您看到的异常是什么?

如果对象实现了
serializable
,并且其所有非瞬态和非静态字段都是可序列化的,则该对象是可序列化的。您的
NameValuePair
是否可序列化



跟进:查看,
NameValuePair
实现了
Serializable
。另外,
String[]
是可序列化的。您看到的异常是什么?

您可能需要在部分中使用默认构造函数。

您可能需要在部分中使用默认构造函数。

NameValuePair中有什么内容?可能是一个不可序列化的值?请尝试创建一个独立的程序来执行此操作。看起来问题在于您在NameValuePair中输入的内容。对象中包含的所有内容都需要可序列化。不,它们都是某种类型的字符串。。。是否有任何非法的值我应该寻找?你可以张贴的名称ValuePair类定义@Steve Kuo可能是对的,它可能没有被定义为可序列化的。我假设这就是所使用的:这个类是可序列化的,所以它看起来像是对象图中的某个地方。我也从未使用私有类进行过序列化,但我也不知道有任何专门针对它的规则?可能是一个不可序列化的值?请尝试创建一个独立的程序来执行此操作。看起来问题在于您在NameValuePair中输入的内容。对象中包含的所有内容都需要可序列化。不,它们都是某种类型的字符串。。。是否有任何非法的值我应该寻找?你可以张贴的名称ValuePair类定义@Steve Kuo可能是对的,它可能没有被定义为可序列化的。我假设这就是所使用的:这个类是可序列化的,所以它看起来像是对象图中的某个地方。我也从未使用私有类进行过序列化,但我也不知道有任何专门针对它的规则。啊。。。我明白你的意思了。。。这不是我的名字。。。它是org.apache.commons.httpClient.NameValuePair,我必须假设它不是。。。在我将其所有内部内容复制到常规哈希之前,哈希是否可以序列化?我知道向量是,但它们很丑:)嗯。。。我已经修改了我的Parts对象(在过程中修改了我的问题…没有改进。在同一个地方失败…字符串[]不可序列化吗?如果不…那么是什么?!啊…我明白你的意思…它不是“我的”NameValuePair…它是org.apache.commons.httpClient.NameValuePair,我必须假设它不是…在我将它的所有内部内容复制到一个常规散列之前,散列是否可以序列化?我知道向量是,但它们很难看:)嗯。。。我已经修改了我的Parts对象(在过程中改变了我的问题…没有改进。在同一个地方失败了…字符串[]不可序列化吗?如果不…那么是什么?!序列化不需要无参数构造函数。序列化不需要无参数构造函数。