Java 在Android中调用ObjectInputStream.readobject时发生ClassNotFoundException

Java 在Android中调用ObjectInputStream.readobject时发生ClassNotFoundException,java,android,classnotfoundexception,Java,Android,Classnotfoundexception,我想从Android内部存储器读取对象 下面是我的代码。 我编写了一个静态函数,用于从同一类中的文件中读取对象。 不知道为什么会发生这种异常。 如果你能给我一些建议,我真的很感激 谢谢 package com.crescent.programmercalculator; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import jav

我想从Android内部存储器读取对象

下面是我的代码。 我编写了一个静态函数,用于从同一类中的文件中读取对象。 不知道为什么会发生这种异常。 如果你能给我一些建议,我真的很感激

谢谢

package com.crescent.programmercalculator;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import android.util.Log;
import android.content.Context;

public class CalculateConfigurations implements Serializable{

    static String configLocation="configFile";

    public short radix;

    CalculateConfigurations(){
        radix=16; 
    }

    public static CalculateConfigurations loadObjectFromFile(Context context){
        try {
            FileInputStream fis = context.openFileInput(configLocation);
            ObjectInputStream is = new ObjectInputStream(fis);
            CalculateConfigurations config = (CalculateConfigurations) is.readObject();
            is.close();
            fis.close();
            return config;
        } catch (FileNotFoundException e) {
            // first use case
            Log.v("CalculateConfigurations", "first init for configuration file");

            return new CalculateConfigurations();
        } catch (IOException e) {
            e.printStackTrace();
            Log.e("CalculateConfigurations", "Fatal error, configuration file may be broken");

            return new CalculateConfigurations();
        } 
        catch (ClassNotFoundException e) {
            e.printStackTrace();
            Log.e("CalculateConfigurations", "Fatal error, unknown");

            return new CalculateConfigurations();
        }
    }
}
ClassNotFoundException

在大多数情况下,这是xml文件中的一些混淆。如果您同时发布stacktrace和正确的xml文件,那么很容易修复它

继续读下去

因InputStream和的问题引发异常 不应反序列化的类。所有的例外都是致命的 输入流并使其处于不确定状态;这取决于 调用方忽略或恢复流状态

由于您试图读取android内部库,因此无法将其强制转换为自定义类。因此出现了ClassNotFoundException


希望这有帮助。

我今天遇到了同样的问题。我不知道序列化/反序列化是如何完成的,但我注意到这是一个非常不稳定的过程


如果序列化某些对象并放入内存,则无法轻松更改数据类型/类名。。如果它抛出类似这样的类not found异常,请从设备中删除该应用程序并重新安装。我希望,它能帮助一些开发人员:)

请发布堆栈跟踪!这几乎总是表示在序列化流中有实例的某个类不在运行库中。您的LogCat输出将告诉您哪个类。在重建/重新加载到我的android设备后,它会突然工作。谢谢你的建议