0

嗨,我正在为 Eclipse 开发一个插件,其中部分涉及为 java 项目创建/维护类路径容器。在某些情况下,容器名称 ( getDescription()) 可能会更改。现在只需选择容器或项目并按 F5 即可刷新并显示新名称,但我似乎无法以编程方式执行此操作。我试过了:

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
...
for (IProject p: root.getProjects()) {
    ... some checks done here...
    p.refreshLocal(IResource.DEPTH_INFINITE, null);
}

但这似乎并没有刷新名称。我也尝试过一些愚蠢的事情,比如复制部分内容RefreshAction(我认为按下 F5 时使用的内容),但这也不起作用。任何帮助,将不胜感激。

4

1 回答 1

2

我发现 JDT 期望类路径容器以不可变的方式运行。也就是说,IClasspathContainer 方法返回的任何值都不会从一个调用更改为另一个调用。如果他们这样做了,JDT 可能会发生有趣的事情。这不是一个很好的 API。

因此,将其视为不可变对象,当您需要更改某些内容(无论是条目还是描述)时,通过 JavaCore.setClasspathContainer() 调用提供一个新的 IClasspathContainer 实例。这将确保一切都正确更新。

于 2012-10-09T20:33:58.417 回答