Eclipse 在IFile(链接资源)上创建IMarker时发生ResourceException
我在更新“旧”Eclipse插件时遇到一些问题。下面是我想做的事情和原始插件做的事情: (使用文件名和错误信息-->在控制台上解析编译器输出仍然有效) -->将链接设置为文件中的位置 -->将标记设置为文件中的位置 我过去所做的是从文件的路径字符串中获取IFile并从中生成链接和标记:Eclipse 在IFile(链接资源)上创建IMarker时发生ResourceException,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,我在更新“旧”Eclipse插件时遇到一些问题。下面是我想做的事情和原始插件做的事情: (使用文件名和错误信息-->在控制台上解析编译器输出仍然有效) -->将链接设置为文件中的位置 -->将标记设置为文件中的位置 我过去所做的是从文件的路径字符串中获取IFile并从中生成链接和标记: IFile ifile; IWorkspace workspace = ResourcesPlugin.getWorkspace(); IPath path = new Path(fileName); IFil
IFile ifile;
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IPath path = new Path(fileName);
IFiles[] files = workspace.getRoot().findFilesForLocation(path);
...
ifile = iFiles[0];
Map attributes = new HashMap();
attributes.put(IMarker.SEVERITY, new Integer (severity));
MarkerUtilities.setLineNumber(attributes, lineNumber);
MarkerUtilities.setMessage(attributes, message);
MarkerUtilities.createMarker(ifile, attributes,
IMarker
由于findFilesForLocation已被弃用,我试图找到另一种方法,但无论如何都没有成功。使用更改的代码获取IFile始终会导致异常:org.eclipse.core.internal.resources.ResourceException:Resource'/path/to/file.c'不存在。
这是否可能与源文件仅链接到项目中,而不是在项目中物理链接有关
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IPath location = new Path(fileName);
IFile ifile = workspace.getRoot().getFile(location);
有人能帮忙吗
谢谢大家! 我猜
fileName
是您想要获取的文件的完全限定路径。我还猜测,您正在查找的文件已经在工作区中,即使它已链接(如果未链接,则此操作将不起作用。在获取IFile之前,您需要先将该文件添加到项目中)
您需要这样做:
IFiles[] files = workspace.getRoot().findFilesForLocationURI("file:" + fileName);
然后,这将查找工作区中与文件系统中的文件相对应的所有文件
上面尝试给您一个
ResourceException
的原因是,您试图传入一个文件系统路径,以便从工作区获取IFile对象。Eclipse工作区是对底层文件系统的抽象,不能直接使用绝对路径。对于资源API,路径通常指工作区中的路径,位置通常指文件系统中或工作区外的位置。如果您已经有了一个工作区路径,只需向IWorkspaceRoot请求IFile,然后继续您的工作