0

さて、私は jar、jar A、および別の jar、jar B を持っています。Jar B は古く、オブジェクトをファイルにシリアル化するために使用しました。実行中の jar B をシャットダウンし、jar A をダウンロードして jar B を置き換えます。これに関する問題は、A には B と比較していくつかの新しい/欠落しているフィールドがあることです。jar B のコピーを使用してロードする方法はありますか?シリアル化されたオブジェクトを A に移動しますか? (またはあなたが考えることができる他の解決策)

そして、誰もが知っているように、私は外部ライブラリを使用できません。事前にご協力いただきありがとうございます。

4

2 に答える 2

0

シリアル化するオブジェクトのクラス定義でシリアル バージョン ID を提供する必要があり、それを jar A と B の両方で同じに保つ必要があります。これが完了すると、jar B を使用してファイルを逆シリアル化できるはずです。 jar A を使用してシリアル化されます。

例として、記事http://www.mkyong.com/java-best-practices/understand-the-serialversionuid/を読むことができます。

于 2013-05-26T05:00:35.180 に答える
0

JAR のソースにアクセスできるかどうかによって異なります。質問を考えると、あなたはそうではないと思います。その場合、JAR B を使用するカスタム クラス ローダーを使用して、指定されたクラスをロードし、それを非オブジェクト形式 (XML、JSON、文字列など) に変換する必要があります。文字列内の情報を使用して新しい A オブジェクトを作成できる他のクラスを呼び出します。

これが 1 回限りの変換である場合は、JAR B を使用し、クラスをロードし、それをシリアル化されていない形式 (再度、XML、JSON、テキストなど) に保存するアプリケーションを作成する方が簡単かもしれません。 JAR A を使用して実際のアプリケーションによってロードされます。

于 2013-05-26T04:37:32.723 に答える