現在、他のjarに依存するEclipseのプラグインを作成しようとしています。したがって、jarにプラグインベースを作成し、Eclipseのプラグインフォラーの下にデプロイしました。Eclipseを介して作業環境から起動するとうまく機能します。ただし、jarにエクスポートしてEclipseにデプロイするとすぐに、依存するjarを見つけることができなかったため、機能しなくなりました。何が起こったのか、そしてどのように問題を解決するのですか?誰か知っていますか?私を救ってください。
4 に答える
MANIFEST.MFには、「依存関係」と呼ばれるタブがあります。このタブには、現在のプラグインが依存するすべてのプラグインを配置する必要があります。実行時に、「依存関係」プラグインを、開始するフォルダーまたは操作するフォルダーと同じフォルダーに配置する必要があります。
プラグインに使用するjarがある場合は、jarを「ランタイム」クラスパスエントリに配置し、jarを「ビルド」バイナリビルドエントリに追加する必要があります。
また、「外部jar」プラグインに関連付けられているplugin.xmlは、適切なパッケージをエクスポートしますか?
サードパーティのjarファイルをプラグインとしてパッケージ化するために必要なすべての手順を説明しているこの記事を確認しましたか?
その他の非常に重要なポイントは、次のようなルールを持つOSGIEnterpriseアプリのPDEおよびサードパーティバンドルの記事で説明されています。
依存関係のあるJARファイルは常に別々のバンドルに入れ、マニフェストファイルに依存関係を記述してください。それらのJARを独自のバンドルで非表示にしないでください。
可能であれば、Import-Packageを使用して依存関係を解決してください。
「パブリック」パッケージのみをエクスポートします。内部パッケージはエクスポートしません。
Require-Bundleは、一般的なバンドルに対してではなく、独自の「ユニバース」内の依存関係を解決するためにのみ使用してください。
常に、Require-Bundle、Import-Package、およびExport-Packageをバージョン管理します。
Require-Bundleには、常に特定の名前のバンドルへの依存関係があります。
Import-Packageはバンドルの名前に依存しないため、より柔軟です。もちろん、Require-Bundleを使用したワンライナーと比較して、パッケージを確認し、インポートまたはエクスポートする必要があるものを決定するための作業は多くなります。バンドル自体にバンドル内のパッケージが含まれていて、それらをエクスポートする場合は、これらのパッケージをインポートされたパッケージとしてマニフェストに入れないでください。
プラグインとしてバンドルをデプロイする前に、Package-Usesが再計算されていることを確認してください。間違ったパッケージ-エクスポートされたパッケージのエントリを使用すると、PDEがプラグインをエクスポートするのを停止する可能性があります。
私も同じような問題を抱えていました。プラグインビューを使用して修正しました。
- [ランタイム]タブの[クラスパス]セクションを使用してjarを追加します
- [概要]タブの[マニフェストの整理ウィザード]を使用して、必要なすべてのマニフェストの変更を行います
- [概要]タブのエクスポートウィザードを使用して、完成したプラグインをエクスポートします。
私はEclipse3.3を使用しているので、マイレージは異なる場合があります。
依存する jar がプロジェクトのクラスパスにあるため、Eclipse からの動作は正常です。
デプロイしたプラグイン フォルダを確認しましたか? 依存関係がプラグインフォルダーに含まれていないと思われます。