import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Manager {
public static void main(String[] args) throws Exception {
serialize();
deSerialize();
}
public static void serialize() throws Exception {
E obj = new E();
obj.num = 100;
F f1 = new F();
f1.j = 40;
f1.e1 = obj;
FileOutputStream fout = new FileOutputStream("test1.txt");
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(f1);
}
public static void deSerialize() throws Exception {
FileInputStream fin = new FileInputStream("test1.txt");
ObjectInputStream in = new ObjectInputStream(fin);
F f2 = (F) in.readObject();
System.out.println(f2.e1.num);
System.out.println(f2.j);
}
}
class E implements Serializable {
int num;
}
class F implements Serializable {
E e1;
int j;
}
//为什么我在本程序中遇到java.lang.NoSuchFieldError : num
运行时错误。
答案 0 :(得分:0)
我能想到的唯一解释是你编译了所有代码,然后从E中删除'num'并重新编译该类,然后执行程序。已经提到的所有其他方案都会导致不同的例外。
完整的堆栈跟踪会很有趣。请提供。将其编辑到您的问题中。