5

[依存関係] タブでは、プラグインとパッケージのどちらかを選択できます。それらの違いは何ですか?の場合org.eclipse.compare、インポートされたパッケージとプラグインにも含まれています。

ここに画像の説明を入力

ここに画像の説明を入力

jar ファイルは plugins ディレクトリにありますが、org.eclipse.compare のパッケージ ファイルがどこにあるのかわかりません。

ここに画像の説明を入力

エクスポート メニューでは、プラグインやパッケージのエクスポートではなく、jar へのエクスポートのみのようです。パッケージをエクスポートするにはどうすればよいですか?

ここに画像の説明を入力

追加した

この投稿に基づいて - Eclipse からパッケージをインポートする方法は? そしてshipluの答え。これが私が理解するようになったものです。私が間違っている場合は、私を修正してください。

  1. Eclipse では、come external クラスを使用すると、Quick-Assistant または Organize imports (Ctrl-Shift-O) を使用して参照を解決できます。Imported PackagesEclipse は、作業中のプロジェクトのクラスを含むパッケージを追加します。パッケージには、複数のクラス (タイプ) を含めることができます。Eclipse は、どのプラグインがパッケージに含まれているかを理解し、参照の問題を解決します。
  2. プラグイン (jar ファイル) には、複数のパッケージを含めることができます。依存関係タブで必要なプラグインを指定することにより、Eclipse IDE のすべての Java プロジェクトのすべてのパッケージ (およびパッケージ内のクラス) を参照できます。

そして、私の経験から、ヘッドレス RCP をスタンドアロンにするために、すべての依存関係を追加する必要がありました (http://prosseek.blogspot.com/2012/12/headless-rcp-standalone.html )。

4

3 に答える 3

4

Eclipse プラグインは基本的に、Eclipse IDE が理解して解釈する追加の plugin.xml ファイルを含む OSGi バンドルです。

したがって、あなたの質問に対する答えは、OSGi 仕様と OSGi プログラミング モデルにあります。非常に簡単に言えば、Eclipse は Equinox と呼ばれる OSGi の実装で実行されるアプリケーションだからです。

OSGi はモジュラー アプリケーションを持つことがすべてであるため、いくつかのレベルのモジュール性が定義されています。そのようなレベルの 1 つはバンドル レベル (モジュール レベル) のモジュール性であり、より細かいレベルはパッケージ レベルのモジュール性です。

したがって、db-bundle (データストアサービスを提供する)、app-domain-bundle (アプリケーションドメインサービスを提供する)、および remote-bundle (たとえば、REST を介してアプリケーションを Web に公開します)。

そして、remote-bundle は db-bundle に依存する domain-bundle に依存すると言います。これはすべて良いことですが、基本的にアプリケーションを db-bundle と remote-bundle の特定の実装、つまりそれらが提供するサービスの特定の実装に制限しているため、OSGi が提供する固有のモジュール性が損なわれます。

代わりに、バンドル間ではなくパッケージ間で上記の依存関係を確立できます。つまり、サービスレベルの依存関係を確立できます。次に、ドメインバンドルには dbstore.service パッケージを実行する必要があると言いますが、どのバンドルがそれを提供するかは気にせず、このサービスのインスタンスが機能する必要があるだけです。したがって、dbstore.service の実装を提供する複数のバンドルを持つことができ、ドメインバンドルは実行時に使用するサービスを選択できます。

OSGi の概念を数文で説明するのは非常に難しいので、Web を調べたり、OSGi の仕様を調べたりすることを強くお勧めします。

それを説明する別の方法は、バンドル/プラグインは、特定の構造とメタデータ記述子 (MANIFEST.MF および plugin.xml) を含む jar ファイルであり、その内容を Java 言語の概念で説明しているということです。 jar には OSGi ランタイムが含まれており、OSGi ランタイムに公開されるため、他のバンドルで使用できます。つまり、バンドルは物理的に展開可能なエンティティであり、記述子は実際に展開されているものに関するメタデータです。

編集: Lii が以下のコメントで指摘しているように、パッケージまたはサービスレベルの依存関係にもいくつかの欠点があります。主な欠点は、依存関係モデルに複雑さとダイナミクスが追加されることです。以下の彼女または彼のコメントを見てください - 読む価値があります!

于 2012-12-19T21:18:49.623 に答える
1

特定のパッケージを使用Imported Packagesしたいが、どのプラグインがそれを提供するかは気にしない場合に使用します。OSGI が 1 つを選択します。

于 2012-12-19T20:17:42.293 に答える
0

Eclipse プラグインは、IDE 自体の拡張機能のようなものです。ただし、インポートされたパッケージは、実際には現在のプロジェクトで使用するパッケージです。

1 つは開発 IDE 用で、もう 1 つはコーディング中のプロジェクト用です。

于 2012-12-19T20:24:38.333 に答える