简体   繁体   English

不同JVM的java序列化问题

[英]java serialization problems with different JVMs

I am having trouble using serialization in Java. 我在使用Java中的序列化时遇到了问题。 I've searched the web for a solution but haven't found an answer yet. 我在网上搜索了一个解决方案,但还没有找到答案。

The problem is this - I have a Java library (I have the code and I export it to an archive prior to executing the code) which I need to use with two differents JVMs. 问题是这个 - 我有一个Java库(我有代码,我在执行代码之前将它导出到一个存档),我需要使用两个不同的JVM。 One JVM is on the server (Ubuntu, running Java(TM) JRE SE Runtime Environment (build 1.7.0_09-b05)) and the other on Android 2.3.3. 一台JVM在服务器上(Ubuntu,运行Java(TM)JRE SE运行时环境(版本1.7.0_09-b05)),另一台运行在Android 2.3.3上。 I compiled the library in Java 1.6. 我在Java 1.6中编译了库。

Now, I am trying to import to the client, an object exported from the server, but I receive this error: 现在,我正在尝试导入到客户端,从服务器导出的对象,但是我收到此错误:

java.io.InvalidClassException: [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;; java.io.InvalidClassException:[Lweka.classifiers.functions.MultilayerPerceptron $ NeuralEnd ;; Incompatible class (SUID): [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =-359311387972759020L; 不兼容的类(SUID):[Lweka.classifiers.functions.MultilayerPerceptron $ NeuralEnd ;: static final long serialVersionUID = -359311387972759020L; but expected [Lweka.classifiers.functions.MultilayerPerceptron$NeuralEnd;: static final long serialVersionUID =1920571045915494592L; 但预计[Lweka.classifiers.functions.MultilayerPerceptron $ NeuralEnd;:static final long serialVersionUID = 1920571045915494592L;

I do have an explicit serial version UID declared on the class MultilayerPerceptron$NeuralEnd , like this: 我在类MultilayerPerceptron$NeuralEnd上声明了一个显式的串行版本UID,如下所示:

protected class NeuralEnd extends NeuralConnection {
    private static final long serialVersionUID = 7305185603191183338L;
}

Where NeuralConnection implements the java.io.Serializable interface. 其中NeuralConnection实现了java.io.Serializable接口。 If I do a serialver on MultilayerPerceptron$NeuralEnd I receive the serialVersionUID which I declared. 如果我做一个的serialver MultilayerPerceptron$NeuralEnd我收到我宣布的serialVersionUID。 So, why have both JVMs changed this value? 那么,为什么两个JVM都改变了这个值呢? Can you help me? 你能帮助我吗?

Thanks, Alberto 谢谢,Alberto

There is no solution in my opinion. 我认为没有解决方案。 Serialization does not work between different JVM version (Dalvik is not even JVM...). 序列化在不同的JVM版本之间不起作用(Dalvik甚至不是JVM ......)。 Look for other solution like JSON/XML object serialization. 寻找其他解决方案,如JSON / XML对象序列化。

Your serialVersionUID value is wrong. 您的serialVersionUID值是错误的。 Set it to the 'expected' value in the error message. 将其设置为错误消息中的“预期”值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM