繁体   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