【问题标题】:Invalid Class Exception无效的类异常
【发布时间】: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


【解决方案1】:

您试图用给定的serialVersionUID 序列化一个类,然后用另一个反序列化它。

what is a serialVersionUID

【讨论】:

  • 以及如何使用相同的 serialVersionUID 执行这两项操作?
  • nnn - 取消注释类中设置 serialVersionUID 的行,并确保它是正确的。
  • 您应该在序列化和反序列化运行之间保持您的代码和您的 serialVersionUID 不变。
猜你喜欢
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
相关资源
最近更新 更多