2017-12-11 2 views
0

Ich schreibe eine Intellij-Erweiterung und ich brauche den Speicherort der Klassendatei einer bestimmten virtuellen Datei. Ich bin Laden der virtuellen Datei die folgende Art und Weise:Intellij Idea Plugin Klassen-Datei der virtuellen Datei

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]); 
} 

Innerhalb der Analyse-Funktion, die ich den Inhalt der Klassendatei in einer gui zeigen will.

Ist es möglich, die Klassendatei von j gegebene Java-Datei oder den Psi-Baum zu erhalten?

+0

Möchten Sie die kompilierte .class-Datei für die jeweilige .java-Datei anzeigen? –

+0

Ja, genau das möchte ich wissen – osanger

Antwort

1

Sie können die Methode FilenameIndex.getFilesByName() verwenden, um die .class-Datei abzurufen. Da Sie den Namen der .java-Datei kennen, können Sie den Namen der .class-Datei daraus ableiten.

Aber ich glaube nicht, dass es funktioniert, da .class-Dateien im Zielverzeichnis sind und IDEA dieses Verzeichnis nicht indexiert. Sie können die Methode VfsUtil.collectChildrenRecursively() verwenden, um alle Dateien im Verzeichnis Ziel zu erhalten und später die benötigte .class-Datei herauszufiltern.

Verwandte Themen