エクリプスRCP:2 つの異なるバージョンのプラグインを必要とする製品の作成時に問題が発生しました

StackOverflow https://stackoverflow.com/questions/479254

  •  20-08-2019
  •  | 
  •  

質問

外部製品との互換性の理由から、2 つのバージョンのプラグインを含める必要がある RCP アプリケーションを構築する必要があります。プラグインは org.apache.lucene で、現在 Eclipse 3.4 では 1.9.1 です。他のアプリケーションと互換性を持たせるには、バージョン 1.4.103 が必要です。私の RCP アプリはもともと Eclipse 3.2 を使用して開発されており、3.4 にアップグレードした後にこの問題が発生したと言わなければなりません。

開発中とテスト中、アプリは正常に動作しました。実行構成に 1.4.103 プラグインを手動で追加する必要がありましたが、それ以外の場合は問題なく実行されました。

現在、Build Product 段階にいますが、Product ウィザードの [Configuration] タブに 2 つのバージョンの Lucene プラグインを追加する方法が見つかりません。実行時に、Lucene の 1.4.103 バージョンが見つからないことを示すエラーが表示されます。

役に立ちましたか?

解決

OSGi では、バンドルにはバンドル間の直接の依存関係の概念がないことを考慮してください。
代わりに、各バンドルは、「Import-Package」および「Import-Service」ヘッダーを介して他のバンドルによって登録されることが予想されるサービスとパッケージをリストします。

反対側では、バンドルには、「Export-Package」および「Export-Service」を介してエクスポートする予定のサービスとパッケージがリストされています。したがって、バンドル実装間には厳密な依存関係はありません。いくつかのバンドルがインポートされたパッケージを提供する限り、あなたのバンドルは満足するでしょう。

例として、WTP (Web Tools Platform) 重複した javax.wsdl プラグインがあります:


ここで、サブメニュー「PDE ツール」(プロジェクトを右クリック) を使用して 3.2 プラグイン プロジェクトが変換されていることを確認する必要があります。

次に、 RCP アプリケーション用の製品, 、そこで構成を定義します(目標) 開発ターゲットではなく、ランタイム用です。

他のヒント

私はこの問題にBIRTをバンドルし、ひいてはjavax.wsdlの2つの異なるバージョンの要件を継承した製品を扱ってかなり掘りました。など、Bugzillaのエントリをwikiページの多くを読んだ後、私はPDE問題(プラグイン開発環境)のプロセスを構築することがわかりました。問題は、今のEclipse 3.5で修正されました。 Bugzillaのエントリが https://bugs.eclipse.org/bugs/show_bugであります.cgiの?ID = 265438こちらます。

基本的には、Eclipseの自体は両方のバージョンを指定することができますし、すべてを正しく解決します。しかしながら、(同じ製品ファイルを使用して)PDEビルドは、プラグインの最新バージョンのみを引っ張ります。現在のEclipse 3.4ベースのための当社のソリューションは、強制的にターゲットのプラグインフォルダに追加のプラグインをコピーすることでした。これは、当分の間、私たちの問題を解決し、そして我々は前述のバグ修正をピックアップして、将来的に3.5 RCPベースをEclipseに移行します。

どのように別の名前の下でソースコードからこのプラグインをコンパイルするには?以降に、古いプラグイン機能のラッパーを書くのか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top