从Eclipse Plugin

时间:2016-12-09 17:44:30

标签: java eclipse eclipse-plugin eclipse-jdt

我正在攻击一个Eclipse插件,它对Java项目中的Java文件非常有效。我想让它适用于任何类型项目中的Java文件。

此插件将每个Java文件处理为ICompilationUnit。 但是,在我的方法中,我只能获得IFile的实例。

如何从此ICompilationUnit对象创建IFile

作为替代方案,ITypeRoot可能也有效。我已经看到这是使用以下内容直接从编辑器创建的:

IJavaElement input= JavaUI.getEditorInputJavaElement(editorInput);
        if (input instanceof ITypeRoot) {
            return (ITypeRoot) input;
        }

这种方法即使对非Java项目(来自编辑器中打开的通用项目/目录的java文件)也有效,这让我相信可以直接为文件实现类似的东西。

1 个答案:

答案 0 :(得分:4)

JavaCore.create(IFile)如果适合该文件,则会返回ICompilationUnit

IFile file = ...

IJavaElement element = JavaCore.create(file); 

if (element instanceof ICompilationUnit) {
  ICompilationUnit compUnit = (ICompilationUnit)element;

  ...
}

可能会返回其他对象,例如{。{1}} .class文件。