1

論理回路を構築し、NetBeans プラットフォームのLookupおよびServiceProviderメカニズムを使用して、利用可能なすべての論理要素を UI パレットに取得するプログラムを作成します。

モデル (MVC) には、すべての要素の ServiceProvider である BasicElement クラスがあります。このクラスはパブリックであり、そのパッケージはパブリックにエクスポートされ、View モジュールはそれに依存しています。ビュー モジュールは、このモデル モジュールについてのみ認識します。誰かが @ServiceProvider で注釈が付けられた要素のパックを含む新しいモジュールを追加すると、View は Lookup 要素で見つかった新しいモジュールをパレットにロードします。次に、ユーザーはパレットからシーンに要素を追加し、いくつかの回路を作成して保存 (シリアル化) できます。

問題は、プログラムが保存されたファイルを開こうとすると (要素をデシリアライズする) 例外が発生することです。要素を持つモジュールを認識している (依存している) モジュールがないためです (そして、それらのモジュール内のパッケージは公開されていない可能性があります)。要素には注釈が付けられているだけで、ユーザーに到達するだけで十分です。

それらを逆シリアル化するための要素を持つ新しいモジュールへの依存関係を毎回追加することなく、可能性はありますか? または、一般に、ServiceProvider クラスの背後に隠されているクラス オブジェクトを逆シリアル化する方法があります。

4

1 に答える 1

2

私は少し前にこの正確な問題に直面しました。多くの調査の結果、ObjectInputStream で使用されるクラス ローダーを変更できることがわかりました。私のソリューションの詳細については、トピックに関する私のブログ投稿をご覧ください。http://www.pellissier.co.za/hermien/?p=179

于 2012-12-13T14:52:09.367 に答える