在Eclipse中刷新类路径容器名称

时间:2012-10-09 19:17:07

标签: java eclipse plugins

您好我正在开发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时所使用的内容)的部分内容,但这也没有用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

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