2012-04-26 2 views
1

ロジック回路を構築するプログラムを作成し、利用可能なすべてのロジック要素をUIパレットに取得するために、ルックアップおよびServiceProvider NetBeansプラットフォームのメカニズムを作成します。JavaでServiceProviderクラスオブジェクトの背後に隠されている非直列化するには?

モデル(MVC)には、すべての要素のServiceProviderであるBasicElementクラスがあります。このクラスは公開されており、パッケージは公開されており、Viewモジュールには依存関係があります。 ViewモジュールはこのModelモジュールについてのみ認識します。誰かが要素のパックを持つ新しいモジュールを追加するとに@ServiceProviderが追加され、ViewはLookup要素で見つかった新しい要素をパレットに読み込みます。次に、ユーザーはパレットからシーンに要素を渡し、回路をいくつか作成して保存します(シリアル化します)。

問題は、保存されたファイル(デシリアライズ要素)の例外が発生する可能性があることです。なぜなら、モジュールは要素を持つモジュールを知っている(依存している)わけではないからです(そして、それらのモジュールのパッケージは公にエクスポートできません)。要素には注釈が付けられているだけで、ユーザーには十分です。

のない可能性たびdeserialiseものに要素を持つ新しいモジュールの依存を追加することがあります。あるいは、一般に、ServiceProviderクラスの背後に隠れているクラスオブジェクトを逆シリアル化する方法があります。

答えて

2

少し前にこの問題に直面しました。多くの研究の結果、ObjectInputStreamで使用されるクラスローダーを変更できることがわかりました。私の解決策を詳述しているトピックに関する私のブログ記事を見てください。 http://www.pellissier.co.za/hermien/?p=179

+1

ちょうど、この解を解答に移動するのが最善でしょう。 – MikeTheLiar

関連する問題