我在Java中使用序列化时遇到问题。我在网上搜索了一个解决方案,但还没有找到答案。不同JVM的java序列化问题
问题是这样的 - 我有一个Java库(我有代码,我将它导出到执行代码之前的档案),我需要使用两个不同的JVM。一个JVM在服务器上(Ubuntu,运行Java(TM)JRE SE运行时环境(build 1.7.0_09-b05)),另一个在Android 2.3.3上。我用Java 1.6编译了这个库。现在
,我试图导入到客户端,从服务器中导出的对象,但我收到此错误:
java.io.InvalidClassException: [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;; Incompatible class (SUID): [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =-359311387972759020L; but expected [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =1920571045915494592L;
我做对类MultilayerPerceptron$NeuralEnd
宣布一个明确的序列版本UID,像这个:
protected class NeuralEnd extends NeuralConnection {
private static final long serialVersionUID = 7305185603191183338L;
}
其中NeuralConnection实现了java.io.Serializable接口。如果我做serialver on MultilayerPerceptron$NeuralEnd
我收到我声明的serialVersionUID。那么,为什么两个JVM都改变了这个值?你可以帮我吗?
感谢, 阿尔贝托
请包括您的外部类的定义。 – Perception
对不起,我不明白:MultilayerPerceptron类? – Alberto
是的,因为你的内部类不是静态的,它包含一个隐含的引用,它的外部类必须是可序列化的。我很好奇,看看你的外部类(多层感知器)的定义 – Perception