我在 Java 中使用序列化时遇到问题。我在网上搜索了解决方案,但还没有找到答案。
问题是这样的——我有一个 Java 库(我有代码,并在执行代码之前将其导出到存档),我需要与两个不同的 JVM 一起使用。一个 JVM 在服务器上(Ubuntu,运行 Java(TM) JRE SE 运行时环境(内部版本 1.7.0_09-b05)),另一个在 Android 2.3.3 上。我在 Java 1.6 中编译了这个库。
现在,我正在尝试将一个从服务器导出的对象导入到客户端,但我收到此错误:
java.io.InvalidClassException: [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;; 不兼容的类(SUID):[Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =-359311387972759020L; 但预期 [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =1920571045915494592L;
我确实在 class 上声明了一个明确的串行版本 UID MultilayerPerceptron$NeuralEnd
,如下所示:
protected class NeuralEnd extends NeuralConnection {
private static final long serialVersionUID = 7305185603191183338L;
}
其中 NeuralConnection 实现了 java.io.Serializable 接口。如果我在上面做一个serialver,MultilayerPerceptron$NeuralEnd
我会收到我声明的 serialVersionUID。那么,为什么两个 JVM 都改变了这个值呢?你能帮助我吗?
谢谢,阿尔贝托