0

Eclipse プラグインを作成していますが、IType ではなく、選択したファイルの Class オブジェクトが必要です。それは可能ですか、それを行う最善の方法は何ですか?

編集: 考えてみると、run as のように追加するのが最善の方法です (junit、プロファイラー、または他のプラグインが行っているように)。彼らはクラスの機能を実行しているため、クラスにアクセスできる必要があると思います(Xが問題のクラスである場合)。では、「ru​​n as」アクションを持つプラグインを作成し、ライブ オブジェクトを取得するにはどうすればよいでしょうか。

4

3 に答える 3

2

Eclipseプラグインでは、たとえば、IActionを介して選択したファイルを取得します。
(これは、エンドユーザーがトリガーできるコマンドの非UI側を表します。アクションは通常、ボタン、メニュー項目、およびツールバーの項目に関連付けられています。)

そこから:

IResource selectedResource = ResourceUtils.getSelectedResource();

IResourceファイルシステムファイルおよびディレクトリのワークスペースアナログ。リソースには、ファイル、フォルダー、プロジェクト、およびワークスペースルートの4種類があります。

そのタイプから、それをIFileにキャストできます。これにより、フルパスにアクセスできます(getFullPath()

于 2009-03-05T05:11:58.670 に答える
2

Eclipse は、ファイル (IResource) であれ、Java タイプ (IJavaType) であれ、選択されているオブジェクトの抽象表現を使用します。ソース ファイルをコンパイルする必要がないため (たとえば、自動ビルドを無効にする)、編集中のコードの .class ファイルまたは Class オブジェクトが必ずしも存在するとは限りません。したがって、ユーザー インターフェイスの選択から「クラス」オブジェクトを取得する正しい方法はありません。

ただし、昨日述べたように、Eclipse ビルダー メカニズムは常にソース ファイルをすぐにコンパイルするため、.class ファイルが存在するという事実に頼ることができます。実行時にこの .class ファイルにアクセスするには、プロジェクトの動的クラス ローダーを作成するか、ランタイム VM を開始する必要があります。私はそれを試してみましたが、うまくいきますが、これは非常に不安定なアプローチであり、追跡が困難なさまざまな障害につながる可能性があります。

于 2009-03-07T22:43:13.027 に答える