4

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 がこの値を変更したのでしょうか? 手伝って頂けますか?

ありがとう、アルベルト

4

2 に答える 2

0

私の意見では解決策はありません。シリアライゼーションは、異なる JVM バージョン間では機能しません (Dalvik は JVM でさえありません...)。JSON/XML オブジェクトのシリアル化などの他のソリューションを探してください。

于 2012-11-09T18:51:17.823 に答える
0

serialVersionUID の値が間違っています。エラーメッセージの「期待される」値に設定してください。

于 2012-11-09T22:56:47.697 に答える