[英]I'm getting a NotActiveException at defaultWriteObject and I can't tell why
I have a writeObject method in the class I'm serializing, and I'm calling defaultWriteObject in it. 我要序列化的类中有一个writeObject方法,并且在其中调用defaultWriteObject。 What is wrong here?
怎么了 The field password is the transient field that I'm trying to encrypt then decrypt on my own.
字段密码是我尝试加密然后自己解密的临时字段。 When I run this code, I get a NotActiveException at defaultWriteObject().
当我运行此代码时,在defaultWriteObject()处收到NotActiveException。 Any help would be appreciated, thanks :)
任何帮助,将不胜感激,谢谢:)
public static void main(String[] args) throws IOException,
ClassNotFoundException {
Account bankAccount;
bankAccount = new Account("Person", 123456789, "Pa55word", 900);
try {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("P:/Account.txt"));
bankAccount.writeObject(out);
out.close();
Account otherAccount = new Account();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("P:/Account.txt"));
otherAccount.readObject(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private void writeObject(ObjectOutputStream out) throws IOException, ClassNotFoundException {
out.defaultWriteObject();
out.writeObject(encrypt(password));
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
password = decrypt((String)in.readObject());
}
Here is the stack trace: 这是堆栈跟踪:
java.io.NotActiveException: not in call to writeObject
at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
at Account.writeObject(Account.java:75)
at Account.main(Account.java:59)
The problem is in here: bankAccount.writeObject(out);
问题出在这里:
bankAccount.writeObject(out);
You need to write your Object into ObjectOutputStream
than Serializable will call your method writeObject and will save it. 您需要将Object写入
ObjectOutputStream
,然后Serializable将调用方法writeObject并将其保存。
Try to : out.writeObject(bankAccount)
尝试:
out.writeObject(bankAccount)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.