您好我正在开发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时所使用的内容)的部分内容,但这也没有用。任何帮助将不胜感激。
答案 0 :(得分:2)
我发现JDT期望类路径容器以不可变的方式运行。也就是说,IClasspathContainer方法返回的值都不会从一次调用更改为另一种。如果他们这样做,JDT可能会发生有趣的事情。这不是一个非常好的API。
因此,将其视为不可变对象,当您需要更改某些内容(无论是条目还是描述)时,通过JavaCore.setClasspathContainer()调用提供新的IClasspathContainer实例。这将确保一切都正确更新。