問題は、すべてのプラグインに独自の Classloader があり、Hibernate が Reflection を使用して適切なクラスを見つけることです。
まさにこの問題に関する非常に優れた記事が自宅にありますが、これはドイツ語です。私はあなたが何をする必要があるかを説明しようとします。
データ構造を複数のプラグインで共有するには、それをプラグインに入れ、buddy-policyという機能を有効にする必要があります。起動時に休止状態を開始する main-application-plugin があるとします。このプラグインは、datastructure-plugin からクラスを「見る」必要があります。これを行うために、main-plugin はその Buddy-Policy を "registered" に設定し、datastructure-plugin は自分自身を "buddy" として登録します。残念ながら、これはすべてマニフェスト ファイルで直接行う必要があります。少なくとも 3.3 では、エディタでこれを行う方法がありませんでした。
このバディ ポリシーが機能すると、Hibernate も機能します。
古いアプリケーションを調べたところ、これがどのように行われたかです。
- メインアプリケーション (toolseye.rcp) は、休止状態プラグイン (de.eye4eye.hibernate) とデータ構造プラグイン (toolseye.datastructures) に依存しています。
- hibernate-plugin は、バディ ポリシーを「登録済み」として指定します。
- datastructure-plugin は自分自身を hibernate-plugin に登録します
重要な行は次のとおりです。
Hibernate プラグイン de.eye4eye.hibernate
Eclipse-BuddyPolicy: registered
データ構造プラグイン ツールeye.datastructures
Eclipse-RegisterBuddy: de.eye4eye.hibernate
これらの行を MANIFEST.MF に直接入れます
両方のプラグインは、メイン アプリケーションまたは間にあるレイヤーがそれらを使用できるように、パッケージを再エクスポートする必要があります。それが役に立ったことを願っています。