Java Eclipse SDK getFileForLocation虽然文件位于工作区中,但返回null

Java Eclipse SDK getFileForLocation虽然文件位于工作区中,但返回null,java,eclipse,eclipse-plugin,eclipse-rcp,Java,Eclipse,Eclipse Plugin,Eclipse Rcp,我正在为Eclipse编写一个插件。作为插件的一部分,我只是尝试在我的工作区中获取一个文件的IFile。为此,我使用了ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path),但这似乎根本不起作用 下面是最简单的测试用例。我有一个操作可以执行以下操作: IPath path = new Path("C:/Programming/runtime-New_configuration/slackbot-resistance/RE

我正在为Eclipse编写一个插件。作为插件的一部分,我只是尝试在我的工作区中获取一个文件的IFile。为此,我使用了
ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path)
,但这似乎根本不起作用

下面是最简单的测试用例。我有一个操作可以执行以下操作:

IPath path = new Path("C:/Programming/runtime-New_configuration/slackbot-resistance/README.md");
IFile toOpen = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
我在工作区的
编程/runtime-New\u配置中运行它。我已经将“slackbot resistance”项目包含在此工作区中。工作区中有一个
README.md
文件。我可以在Eclipse中通过手动单击该文件成功地打开该文件


但是
toOpen
总是以
null
结束。我不明白。正如它告诉我的那样,我正在向它传递当前工作区中某个项目中的文件的绝对路径,但它返回null。此方法是否存在错误或文档严重不足?

什么是
ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()
report?C:\Programming\runtime-New\u configuration实际上,如果打开文件的“属性”,“资源”选项卡有一个“位置”值,这是
getFileForLocation
将尝试匹配的。该文件的位置值是C:\Programming\slackbot resistance\README.md。古怪的最初我确实在工作区之外创建了项目,但后来我将其导入了工作区。当我这样做时,它将所有文件复制到工作区中。我在工作区内的文件系统中看到了所有项目文件,包括我试图通过编程查找的文件。那么,为什么此文件的“位置”值指向原始文件位置而不是工作区内的新位置?属性“链接文件”中是否显示了类型?可以在工作区之外创建指向文件的链接。