2017-12-11 8 views
0

私はIntellij拡張を作成していますので、特定の仮想ファイルのクラスファイルの場所を知る必要があります。私はGUIのクラスファイルの内容を表示したい分析し、関数内Intellij Idea Pluginは仮想ファイルのクラスファイルを取得します

public void actionPerformed(AnActionEvent e) { 
    if (e.getProject() == null) return; 
    FileEditorManager manager = FileEditorManager.getInstance(e.getProject()); 
    VirtualFile files[] = manager.getSelectedFiles(); 
    //Any files open? 
    if (files.length == 0 || !files[0].getPath().toLowerCase().endsWith(".java")) 
     return; 
    analyse(files[0]); 
} 

:私は、仮想ファイルに以下の方法をロードしています。

与えられたjava-fileまたはpsi-treeからクラスファイルを受け取ることはできますか?

+0

それぞれの.javaファイルのコンパイル済み.classファイルを表示しますか? –

+0

はい、まさに私が知りたいことです – osanger

答えて

1

FilenameIndex.getFilesByName()メソッドを使用すると、.classファイルを取得できます。 .javaファイルの名前を知っているので、これを使用して.classファイル名を派生させることができます。

しかし、.classファイルがターゲットディレクトリにあり、IDEAがそのディレクトリをインデックスに登録していないため、動作しないと思います。 VfsUtil.collectChildrenRecursively()メソッドを使用してターゲットディレクトリにあるファイルを取得し、必要な.classファイルを後でフィルタリングすることができます。

関連する問題