私はJavaでシリアライゼーションについて少し学んだ。私の基本的な理解は、オブジェクトの状態を永続化してストリームに書き込むメカニズムであり、オブジェクトを作成していない他の「JVM」や後の時点で膨張させて使用できるということです。 クラスAを持ち、クラスAのインスタンス、つまりオブジェクトaを作成し、それをシリアル化してファイル "A.ser"に格納するとします。ファイルを他のシステムにコピーし、ファイル "A.ser"を非直列化して、オブジェクトの永続状態を取得します。しかし、その場合、Aのクラス定義は、オブジェクトを逆シリアル化する他のシステムに存在する必要があります。クラス定義を保存して他のシステムに転送する方法はありますか?そのため、クラス定義を取得してクラスを再構築するまで、他のJVMはクラスAが何であるか分かりません。java serialization - クラス定義を維持する
3
A
答えて
1
あなたが何を記述するかは、ClassLoaderです。クラスパスにAを持たないJVMでクラスAをロードできるようにするには、ClassLoaderを使用してクラス(およびその依存関係)をロードする必要があります。
ObjectInputSTreamは、クラスを解決するためにカスタムクラスローダに委譲する必要があります。
https://forums.oracle.com/forums/thread.jspa?threadID=1149865の最後の投稿を参照してください。春もsuch an ObjectInputStreamです。
0
デシリアライゼーションのために、クラスは必要ないと考えています。しかし、クラス定義を外してオブジェクトを実行することができないので、デシリアライゼーション後にはどうしますか?
それは、クラス定義が見つからない場合、逆シリアル化がClassNotFoundExceptionをスローする理由です。クラス定義をjarファイルとして配布できます。
0
シリアル化されていない場合、クラスファイルを別々に保存し、依存関係も評価してバンドルする必要があります。
だから、あなたは、オブジェクトをシリアル化、それはの.classファイルだ見つけ、依存クラスを検出し、あなたはすべての依存関係が解決されて解決されるまで、あまりにも、オンとの彼らの .classファイルを見つける必要があります。
これは簡単な作業ではないので、クラスのjarファイルでこのことを送信してください。
0
1つの考え方は、受信システムがリモートregistryからクラス定義をダウンロードすることです。リフレクションを使用してクラスの名前を取得する必要があります。ちょうど推測、私はそれを試みたことはありません。
関連する問題
- 1. Javaのクラス定義
- 2. Actionscript Serializationクラス
- 3. Javaでユーザー定義クラスをインポートする
- 4. WCFでクラス名をインクルードするJson Serialization
- 5. Java、スイングアプリケーションでグローバルデータベースセッションを維持
- 6. sendredirectでJavaでセッションを維持する
- 7. Java JMSトランザクションのメッセージプロパティを維持する
- 8. 私はそのクラスのCクラスの定義といくつかの内部クラス定義を持っている別のクラス内のクラスを定義し、親メソッド
- 9. バックアップファイルの設定数を維持する
- 10. コンパイルmap異なるJavaファイルのクラス定義を持つjavaファイル(mainを含む)を減らす
- 11. 抽象クラスを定義するには
- 12. カスタムJQueryプラグイン - ユーザー定義のオプションを取得/維持する方法?
- 13. .rtfファイルをリッチテキストボックスにロードして書式設定を維持/維持する
- 14. 固定キーインデックスの維持
- 15. boost :: serialization formatting
- 16. HttpHandlerを生存/維持する中間データを維持する
- 17. Javaストアドプロシージャ(Java JSF)で未定義のパラメータを持つOracleストアドプロシージャ
- 18. C++クラス定義
- 19. 未定義クラス
- 20. 私はクラスのユーザーwiththeの定義を持っているメッセージ
- 21. wcf serialization
- 22. Pythonでオプションの引数を持つクラスを定義します。
- 23. 抽象クラス定義
- 24. はそれが右のプロジェクト設定を維持するために設定PHPクラスを設定しますか?
- 25. Javaアプリケーション用の設定ファイルを維持するための最良の方法
- 26. __setattr __()は__slots__を持つクラスで定義できますか?
- 27. 派生クラスで未定義の基本クラスのメソッドを定義する
- 28. Typescript定義ファイルでクラスを定義する
- 29. CFML内でユーザ定義のJavaクラスを呼び出す
- 30. クラス定義外のテンプレート定義
ありがとうございます – NINCOMPOOP