【发布时间】:2018-10-28 03:56:16
【问题描述】:
我的应用程序正常工作,在我将名字更改为英文版后,我得到了InvalidClassEception。 我该如何解决? 我找到了一些关于它的信息,但我不明白我该如何解决它。一些帮助? 这是我的代码:
public class Serializare {
//private static final long serialVersionUID = 1L;
public void serialize(Bank bank, String fileName) {
try (ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream(fileName))) {
out.writeObject(bank);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public Bank deserializeW(String fileName){
Bank bank = null;
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(
fileName))) {
bank = (Bank) in.readObject();
} catch (IOException | ClassNotFoundException ex) {
ex.printStackTrace();
}
return bank;
}
}
public class Bank implements BankProc, Serializable {
/**
*
*/
//private static final long serialVersionUID = -7029959057180382645L;
private Hashtable<Integer, Account> bank;
...
}
我的错误是
java.io.InvalidClassException: Bank.Bank; local class incompatible: stream classdesc serialVersionUID = -7029959057180382645, local class serialVersionUID = -2329932680711902869
【问题讨论】:
-
你能提供确切的错误吗?它通常包含有用的信息,可以帮助确定代码中的违规位。
-
可能您在翻译中使用了
protected word。没有protected words意大利语! -
java.io.InvalidClassException: Bank.Bank;本地类不兼容:流classdesc serialVersionUID = -7029959057180382645,本地类serialVersionUID = -2329932680711902869
-
你什么时候得到异常的?您是在重新启动 Web 应用程序还是在两个进程之间进行通信?
-
Java 序列化取决于序列化和反序列化之间的类名和字段名和类型是否相同(或兼容,如果是类型)。它非常脆弱,除了专家之外几乎不应该用于任何目的,即便如此,XML、JSON 或几乎任何其他外部表示可能是更好的选择。基本上很烂。
标签: java serialization java-io