Java でのシリアル化の使用に問題があります。解決策をウェブで検索しましたが、まだ答えが見つかりません。
問題はこれです-2つの異なるJVMで使用する必要があるJavaライブラリがあります(コードがあり、コードを実行する前にアーカイブにエクスポートします)。1 つの JVM はサーバー (Ubuntu、Java(TM) JRE SE ランタイム環境 (ビルド 1.7.0_09-b05) を実行) 上にあり、もう 1 つは 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 がこの値を変更したのでしょうか? 手伝って頂けますか?
ありがとう、アルベルト