2016-06-19 19 views
0

ちょうどEclipseを使用し始めて、私が取り組んでいるプラグインのエクスポートに関する問題が発生しました。私は検索しようとしましたが、これまでの運はありません - もし答えがすでにここにあれば、誰かが私にそれを指し示すことができるなら、私は感謝しています。外部プラグインへの依存関係を持つEclipseプラグインのエクスポート

Eclipseでn個のOSGi/Equinoxプラグインを作成しています。プラグインは拡張を可能にする第三者システム用です:基本的に、アプリケーションのプラグインフォルダに置かれたすべてのjarは、起動時に自動的にアプリケーションにロードされます。私はプラグインをまとめて管理していますが、うまく読み込んでいます。 問題は、私がプラグインフォルダの鉱山の横に置かれている別のプラグインに依存していることです。明らかな理由から、私はそのプラグインを自分のプラグインjarファイルにパッケージしたくありません。私は外部アーカイブとして依​​存関係を追加しようとしましたが、これはエクスポートを中断します:プラグインプロジェクトをエクスポートしようとすると、antは依存関係と型がないことに苦情を言います。 (実際にプラグインに他のjarファイルを含めると、すべてが機能しますが、明らかにこれは理想的です)パスや変数で指定する必要はありません。つまり、私の輸出業者に「あなたの隣にあることを心配しないでください」と言うにはどうしたらいいですか?

編集:明らかに私が言及しなかった重要な詳細があります。私が依存している外部jarファイルは、ではなく、OSGiプラグインであるであり、いくつかのクラスを含む通常のjarファイルです。サードパーティのシステムでは、すべて同じ(すべてがプラグインフォルダの下にあり、すべてがアプリケーションにロードされているようです)、Eclipseの場合は区別が重要と思われます。

答えて

0

最終的に私の具体的な問題の解決策は、ビルドプロパティタブ(これはビルドの "jars.extra.classpath = .jar"エントリに変換されたもの)に外部クラスファイルを追加することでした。プロパティファイル)。また、外部依存関係に自動的に変更された余分なクラスパスエントリを追加した後、jarファイルをプロジェクト自体に追加しました。

これらの2つの変更で、プラグインをエクスポートできました。プラグインには外部jarファイルは含まれていませんでしたが、サードパーティシステムに読み込まれたときに参照できました。

2

プラグインのMANIFEST.MFの依存関係として他のプラグインを参照する場合、エクスポートはエラーなしで機能するはずです。プラグインは、MANIFEST.MF内のRequire-Bundleリストにリストされている必要があります。

これは、MANIFEST.MFエディタで、エディタの[依存関係]タブの[必須プラグイン]リストに追加することで実行できます。

注:他のプラグインを参照する場合は、必ずこの方法を使用する必要があります。プラグインjarをJavaビルドパスなどに追加しないでください。

使用するjarがEclipseプラグインでない場合は、それをプラグインの一部として組み込み、MANIFEST.MF内のBundle-Classpathにjarをリストする必要があります。あなたがこれを行うことができない場合は、のようなものを使用してBundle-Classpathで外部jarファイルを参照することができます。

Bundle-Classpath: .,external:$LIB_LOCATION$/lib.jar 

.は、コードのプラグインのための通常のエントリです。 external:$LIB_LOCATION$/lib.jarは、環境変数LIB_LOCATIONで定義された場所にlib.jarを探します。この方法は正しいことが困難な場合があります。

+0

残念ながら、プラグインタイプのjarファイルは、プラグインタイプのjarファイルのみを受け付けますが、外部のjarファイルはいくつかのクラスを含む通常のjarファイルです(上記の私の編集を参照してください)。それ以上の提案はありますか? – Babszem

+0

非プラグインジャーについての情報を追加しました –

+0

私はあなたの提案を試しました。私は余分なjarファイルを少なくとも外部ビルド依存ファイルとして追加する必要があります。次に外部: .jarをBundle-Classpathに追加しましたが、エクスポートは残念ながら失敗します。エラーメッセージ: // .jar = srcは存在しません! – Babszem

関連する問題