2009-04-20 8 views
1

現在、必要なプラグインのクラスを参照する既存のプラグインがあります。私はこのコードを私の断片の一部であるクラスへの参照に置き換えました。既存のプラグインのrequired-pluginsのリストにフラグメントを追加するには

私は2つの問題に直面しています。 フラグメントをjarファイルとしてインポートした場合、Eclipseアプリケーションとして実行されているプラ​​グインがClassNotFoundExceptionの結果として表示されません。

これを克服するために、 )を既存のプラグインプロジェクトに追加します。ただし、リンクでは絶対パスが使用され、展開に適さなくなります。

プラグインをコード変更でパッケージ化し、自分のフラグメントコードに「依存する」ことができるようにします。依存関係としてフラグメントを追加する方法はありますか?例えば

Plugin Project I am changing : org.eclipse.*.editor 
it depends on org.eclipse.*.edit 

I have a fragment mydomain.*.edit which has org.eclipse.*.edit as host plugin 

I want org.eclipse.*.editor to pick up mydomain.*.edit 
instead of org.eclipse.*.edit 

PS:私はまた、MYDOMAINのJARファイルをパッケージ化しようとしている* pluginsディレクトリに編集して試してみて、そこからそれを拾う、それは上に表示doesntの。 org.eclipse。*。editorのplugin.xmlファイルの依存関係タブに必要なプラグインを追加するをクリックするとリストに表示されます。

私が十分明確でない場合は教えてください。

ありがとうございます!

答えて

2

あなたがしたいことを正しく理解していれば、私はそれが可能ではないと思います。他の方法で試してみる必要があります。

プラグインは他のプラグインに依存しています。フラグメントは、別々のランタイムエンティティとして存在するのではなく、プラグインの拡張としてのみ存在します。したがって、プラグインは「エディタ」プラグインのみを参照できます。

フラグメントによって提供されるクラスは、直接アクセスすることはできません。

別のプラグイン(B)からフラグメントのコードを参照すると、そのクラスはプラグインBのクラスローダーによって読み込まれます。これらのクラスは、プラグインAによって提供されます。プラグインAによって読み込まれたプラグインとは異なることがあります。

フラグメントの目的は何ですか?プラグインAの内部コードにアクセスしたいですか? Eclipseエディタを拡張しますか?

元のプラグインが拡張可能ではない機能を拡張したい場合は、プラグインを作成し、元のプラグインからエディタクラスを拡張し、元のプラグインと一緒に登録して代わりに使用する。

[編集]たぶん、このリンクは、より良い説明します:このことができますEclipse FAQ

希望、 ヴラド

0

おかげヴラドは、 あなたの説明は非常に有用でした。実際にフラグメントを対象とした拡張ベースのアーキテクチャとは異なり、エクステンションの一部として公開されていない特定のコンポーネントをエディタで変更する必要がありました。この変更は、私がフラグメントとして作成した外部プロジェクトを参照していましたが、通常のjavaプロジェクトでは、エディタのクラスパスに配置できるjarファイルがパッケージ化されている可能性があります。

jarファイルをクラスパスに配置することで依存関係の問題を解決できましたが、プラグインと関連プラグインをjarファイルとしてエクスポートしてdropinディレクトリに配置すると、正しくインストールされません。 (プラグインディレクトリにjarファイルを置くこともありません)

私が修正しようとしているEclipseエディタは、EMFプロジェクトを使用しています。エディタの依存関係を解決するためにEMFプロジェクトをワークスペース内に保ちました。しかし、EclipseでバンドルされたEMF jarファイルをワークスペースのものに置き換えると、編集したいファイルが正しく認識されません。

これを行う別の方法はありますか?

関連する問題