gpt4 book ai didi

不同JVM的java序列化问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:17 24 4
gpt4 key购买 nike

我在 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 接口(interface)。如果我在 MultilayerPerceptron$NeuralEnd 上执行 serialver,我会收到我声明的 serialVersionUID。那么,为什么两个 JVM 都更改了这个值?你能帮帮我吗?

谢谢,阿尔贝托

最佳答案

我认为没有解决方案。序列化在不同的 JVM 版本之间不起作用(Dalvik 甚至不是 JVM...)。寻找其他解决方案,例如 JSON/XML 对象序列化。

关于不同JVM的java序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13310722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com