Eclipse:プラグインのjarが他のバージョンのどこよりも優先されるようにする方法

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

質問

特定のバージョンのLuceneを含むEclipseプラグインを開発しています。同じバージョンのLuceneを使用する別のアプリケーションで読み取れるように、検索インデックスを生成して展開する必要があります。

最近、Eclipseを3.4にアップグレードしましたが、検索インデックスは2番目のアプリケーションで読み取れなくなりました。 Eclipse 3.4にはLuceneの新しいバージョンが含まれていることがわかり、インデックスの生成時にこのバージョンが使用されていると想定しています。

インデックスの生成時に使用されているLuceneのバージョンを正確に判断するにはどうすればよいですか?プラグインのクラスパスはLuceneのバンドルバージョンで始まるため、バージョンが優先されるはずです。

TIA

役に立ちましたか?

解決 2

今は動作しているようです。興味のある方は、これが私がしなければならないことです:

  • プラグインからLucene 1.4.3 jarを削除しました
  • 古いLuceneプラグインを古いバージョンのEclipseからバージョン3.4にコピーしました。
  • plugin.xmlウィザードのすべての依存関係を削除しました。これで、すべてのLuceneプラグインが表示されます。
  • バージョン1.4.xxを選択し、プロパティを変更して最大バージョンを1.5に設定しました
  • 他のプラグインの依存関係を追加
  • ビルドパスの変更:古いjarの削除、プラグインの依存関係Lucene 1.4.3の追加
  • 再計算された実行構成。 Lucene 1.4.3プラグインは自動的に追加されなかったため、手動で追加しました。
  • インデックスが生成されると、バージョン1.4.3がロードされます。

これが誰かに役立つことを願っています。

他のヒント

ClassPath Checker および ClassPathヘルパーをお試しください。

開発環境で使用されているjarを正確に確認して、Luceがインデックスを生成するデプロイメント環境に存在するjarと比較することができます。

ClasPath Checker jarの競合:
クラスパスチェッカー

クラスパスヘルパーがブロックされた(隠された)クラスビュー:
クラスパスヘルパー

Eclipseプラグインを開発しているので、OSGiを調べる必要があります。 EclipseプラグインはOSGiバンドルのインスタンスであり、OSGiにはバンドル間の依存関係とバージョン管理のための強力なモデルがあります。

特定のコードはわかりませんが、プラグインでLuceneを使用する予定であれば、OSGiの「Import-Package」または「Require-Bundle」機能を使用して依存関係を表現します。プラグインにLucene JARを含めません。すべてのプラグインに独自のLucene JARが含まれている場合、スペースを浪費しますが、さらに重要なことに、互換性のないバージョンになります(お持ちのように)。

OSGIのWebサイトは、OSGiの旅を始めるのに最適な場所ではありません(OSGi仕様とPeterに適しています) Kriensのブログ)。 Neil Bartlettのオンライン book のようなものから始める方が良いでしょう。

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