私は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. Java:基本クラス定義
- 5. WCFでクラス名をインクルードするJson Serialization
- 6. 固定数を維持する方法
- 7. ホバリング時にアクティブなクラスを設定し、アクティブなクラスを維持する
- 8. sendredirectでJavaでセッションを維持する
- 9. Java JMSトランザクションのメッセージプロパティを維持する
- 10. Java、スイングアプリケーションでグローバルデータベースセッションを維持
- 11. は、Javaの定数を定義し、私はこれに似たクラス持つコレクション
- 12. 私はそのクラスのCクラスの定義といくつかの内部クラス定義を持っている別のクラス内のクラスを定義し、親メソッド
- 13. ユーザ定義クラスのJava配列
- 14. Spark:Dataframe Serialization
- 15. バックアップファイルの設定数を維持する
- 16. gitkのフォント設定を維持する
- 17. JavaでManyToOne関係を持つエンティティを維持する
- 18. コンパイルmap異なるJavaファイルのクラス定義を持つjavaファイル(mainを含む)を減らす
- 19. 抽象クラスを定義するには
- 20. .rtfファイルをリッチテキストボックスにロードして書式設定を維持/維持する
- 21. メソッドからスコープを持つクラス属性を定義する
- 22. カスタムJQueryプラグイン - ユーザー定義のオプションを取得/維持する方法?
- 23. ブートストラップ3のモバイルレイアウトからレイアウトに定義済みの列フローを維持する
- 24. ビュー定義ではなく、ポストグルでCREATE VIEWスクリプトを維持する方法
- 25. Javaクラスのデザインルールを定義する方法は?
- 26. 可変Javaクラスで不変オブジェクトを定義する方法は?
- 27. PHPクラスの静的メンバー状態を維持する方法は?
- 28. リフレクションを使用するクラスを維持するAndroid Proguard
- 29. このクラスを定義する方法
- 30. Genericsを使用してJavaクラスでクラス参照を定義する方法は?
ありがとうございます – NINCOMPOOP