java - 从 Eclipse 插件的独立 java 文件中获取 ICompilationUnit/ITypeRoot

标签 java eclipse eclipse-plugin eclipse-jdt

我正在破解一个 Eclipse 插件,该插件非常适合 Java 项目中的 Java 文件。我想让它适用于任何类型项目中的 Java 文件。

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

我如何从这个 IFile 对象创建一个 ICompilationUnit

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

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

这种方法甚至适用于非 Java 项目(来自在编辑器中打开的通用项目/目录的 java 文件),这让我相信可以直接对文件实现类似的东西。

最佳答案

JavaCore.create(IFile) 将返回一个 ICompilationUnit 如果它适合文件:

IFile file = ...

IJavaElement element = JavaCore.create(file); 

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

  ...
}

可能会返回其他对象,例如 .class 文件的 IClassFile

关于java - 从 Eclipse 插件的独立 java 文件中获取 ICompilationUnit/ITypeRoot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066054/

相关文章:

JavaFX TextArea 获取scrollTop百分比

java - java 中的原始数据类型转换 - 内部逻辑

java - 出于一般目的,哪种方法更好地反转整数?

java - 如何将 ArrayList 从 Activity 发送到 NavigationDrawerFragment?

Java OpenCV - 缺少 org.opencv.core.Core rectangle() 方法

java - 让 Eclipse OSGI 激活器相互继承是个好主意吗?

eclipse - 如何等到Eclipse IProject.create()和IProject.open()完成后再运行Eclipse Java项目

Eclipse:为所有单元测试绑定(bind)一些键

java - Action 监听器错误

java - 获取工作区根目录