2012-10-09 29 views
0

您好我正在開發Eclipse的插件,其中部分涉及創建/維護Java項目的類路徑容器。在某些情況下,容器名稱(getDescription())可能會更改。現在只需選擇容器或項目並按F5刷新沒有問題並顯示新名稱,但我似乎無法以編程方式執行此操作。我試過了:刷新Eclipse中的類路徑容器名稱

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

但這似乎沒有刷新名稱。我也嘗試了一些愚蠢的東西,比如重複部分RefreshAction(當按F5我假設時使用的),但那也不起作用。任何幫助,將不勝感激。

回答

2

我發現JDT期望classpath容器以不可變的方式運行。也就是說,IClasspathContainer方法返回的任何值都不會從一次調用變爲另一次。有趣的事情可以發生在JDT上,如果他們這樣做。這不是一個非常好的API。

因此,將它視爲不可變的對象,並且當您需要更改某些內容(無論它是條目還是描述)時,請通過JavaCore.setClasspathContainer()調用提供新的IClasspathContainer實例。這將確保一切正確更新。

+0

我很害怕這種情況。 – SamYonnou