簡體   English   中英

為什么我的Eclipse插件中的資源沒有刷新?

[英]Why aren't my Resources being refreshed in my Eclipse plugin?

我有一個正在使用的自定義Eclipse插件。 它具有一個CustomerExplorer View(Part),可以有效地替換“ Project Explorer”,並且它具有多個MultiPageEditorPart,每個都有XML編輯器和Form編輯器,它們都修改了相同的配置文件。 XML編輯器是TextEditor。 表單和XML鏈接在一起,並且每當存在pageChange()時,它們就會彼此更新。

我的問題在於在Eclipse插件中打開的文件的外部修改。 如果我在外部編輯器中編輯文件,然后從CustomerExplorer View加載文件,則切換到XML選項卡后,我將收到以下消息:

"Resource is out of sync with the file system: '/example/example.xml'.

Press 'F5' or select File > Refresh to refresh the file.

我對使用Eclipse和通常只需按F5鍵,右鍵單擊有問題的文件並選擇刷新或從菜單欄中選擇“文件”>“刷新”通常會解決此錯誤很熟悉。 但是,在這種情況下,F5不執行任何操作,“文件”>“刷新”顯示為灰色,然后右鍵單擊該文件(在我的自定義視圖中),上下文菜單中不包含“刷新”。 我嘗試打開“項目資源管理器”視圖,在上下文菜單中可以使用“刷新”,但這無濟於事。

通過閱讀,我被引導理解這些資源應該通過日食進行刷新,但事實並非如此。 關於為什么的任何指示?

解決問題的另一種方法可能是跟蹤對文件的更改,以在存在以下情況時更新視圖:

ResourcesPlugin.getWorkspace().addResourceChangeListener(new MyResourceTracker(), IResourceChangeEvent.POST_CHANGE);

用這樣的東西:

public class MyResourceTrackerimplements IResourceChangeListener {
    @Override
    public void resourceChanged(final IResourceChangeEvent ev) {
        if (ev.getDelta() != null) {
            try {
                ev.getDelta().accept(new IResourceDeltaVisitor() {
                    @Override
                    public boolean visit(final IResourceDelta delta)
                            throws CoreException {
                        // TODO do something
                        return true;
                    }
                });
            } catch (CoreException e) {
                // TODO
            }
        }
    }
}

很難確切說明這里發生了什么,但是您可能需要顯式添加操作集以刷新資源到自定義視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM