Java 如何获取ICompilationUnit的保存版本?

Java 如何获取ICompilationUnit的保存版本?,java,eclipse-plugin,eclipse-jdt,Java,Eclipse Plugin,Eclipse Jdt,我们当前运行的分析在Eclipse中存在未保存文件的问题…当我们访问Java项目的编译单元时,如果有一个文件当前正在编辑,并且有未保存的更改,那么我们似乎得到了一个包含未保存更改的副本 然而,我们的工具的契约是,它将匹配代码的保存版本,并在每次保存时更新 假设我有一个ICompilationUnit,它有未保存的更改,我怎么才能得到代表当前保存文件的编译单元的版本呢?我认为ICompilationUnit#getPrimary()就是你要找的。我认为你是对的,正如幻灯片19所示:嗯……我希望这会

我们当前运行的分析在Eclipse中存在未保存文件的问题…当我们访问Java项目的编译单元时,如果有一个文件当前正在编辑,并且有未保存的更改,那么我们似乎得到了一个包含未保存更改的副本

然而,我们的工具的契约是,它将匹配代码的保存版本,并在每次保存时更新


假设我有一个ICompilationUnit,它有未保存的更改,我怎么才能得到代表当前保存文件的编译单元的版本呢?

我认为
ICompilationUnit#getPrimary()
就是你要找的。

我认为你是对的,正如幻灯片19所示:嗯……我希望这会是答案,虽然如果API真的这么做了,它会很害羞……但幻灯片19所说的让我更加怀疑我是否已经是“主要工作副本:所有编辑器显示的共享缓冲区”。我要查找的是当前保存的版本,它通常不会由任何Eclipse编辑器显示。要么那张幻灯片有误导性,要么这不是答案。嗯,那么检索与您拥有的
ICompilationUnit
关联的基础
IResource
并从磁盘加载它怎么样?我需要它作为ICompilationUnit来解析它并生成AST,除非我可以基于它获取ICompilationUnit,否则基础资源不是很有用。您可以分析基础IResource:
JavaCore.create(resource)
将为您的.java文件返回一个
ICompilationUnit