Java反序列化遇见的ClassNotFoundException
原意是想把一个文件反序列化成一个Object对象,但是在执行下面这条语句时抛出了异常,不知道为什么。
抛出异常语句:
Object object = in.readObject();
完整反序列化代码:
FileInputStream fileIn =
new
FileInputStream(filename);
ObjectInputStream in =
new
ObjectInputStream(
new
BufferedInputStream(fileIn));
Object object = in.readObject();
看了一下抛出的异常,应该是类名包名和现在工程的包名不一致所导致的。因为这段代码以及刚开始时序列化导出的文件的是我从另一个项目中拿过来的,所以请问有什么解决方法吗?
还是说我只能重新先序列化出一个文件再对新的文件进行反序列化操作?
最后只能自己重新生成了一个文件,然后不用继承接口的方式实现序列化,资源代下载而是自己写了工具类进行序列化与反序列化了。
需要给对象类加id
我也是昨天学到这里
重写ObjectInputStream类,把包名替换
public class MyObjectInputStream extends ObjectInputStream {
protected MyObjectInputStream() throws IOException, SecurityException {
super();
}
public MyObjectInputStream(InputStream arg0) throws IOException {
super(arg0);
}
@Override
protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException{
String name = desc.getName();
try {
if(name.startsWith("com.cluster.manager.storage_manage"))
name = name.replace("com.cluster.manager.storage_manage", "com.cluster.manager.project_manage");
return Class.forName(name);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return super.resolveClass(desc);
}
}
只加id不能解决问题,不同包还是不行
请问你最后的实现方式可以提供一下么?