Intellij Idea Plugin 获取虚拟文件的class-file
Intellij Idea Plugin get class-file of virtual file
我正在编写 Intellij 扩展,因此我需要知道特定虚拟文件的 class 文件的位置。我正在通过以下方式加载虚拟文件:
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]);
}
在分析函数中,我想在 gui 中显示 class 文件的内容。
给定 java 文件或 psi 树是否可以从 j 接收 class 文件?
您可以使用FilenameIndex.getFilesByName()
方法获取.class文件。由于您知道 .java 文件的名称,因此可以使用它来派生 .class 文件名。
但我不认为它会起作用,因为 .class 文件位于目标目录中,而 IDEA 不索引该目录。您可以使用VfsUtil.collectChildrenRecursively()
方法获取target目录中的所有文件,然后过滤掉您需要的.class文件。
我正在编写 Intellij 扩展,因此我需要知道特定虚拟文件的 class 文件的位置。我正在通过以下方式加载虚拟文件:
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]);
}
在分析函数中,我想在 gui 中显示 class 文件的内容。
给定 java 文件或 psi 树是否可以从 j 接收 class 文件?
您可以使用FilenameIndex.getFilesByName()
方法获取.class文件。由于您知道 .java 文件的名称,因此可以使用它来派生 .class 文件名。
但我不认为它会起作用,因为 .class 文件位于目标目录中,而 IDEA 不索引该目录。您可以使用VfsUtil.collectChildrenRecursively()
方法获取target目录中的所有文件,然后过滤掉您需要的.class文件。