Eclipse:プラグインのjarが他のバージョンのどこよりも優先されるようにする方法
-
19-08-2019 - |
質問
特定のバージョンの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 のようなものから始める方が良いでしょう。