Java 在Android中调用ObjectInputStream.readobject时发生ClassNotFoundException
我想从Android内部存储器读取对象 下面是我的代码。 我编写了一个静态函数,用于从同一类中的文件中读取对象。 不知道为什么会发生这种异常。 如果你能给我一些建议,我真的很感激 谢谢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
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设备后,它会突然工作。谢谢你的建议