当前位置:  开发笔记 > 编程语言 > 正文

Eclipse编辑器插件:在项目外打开文件时出现"ERROR"

如何解决《Eclipse编辑器插件:在项目外打开文件时出现"ERROR"》经验,为你挑选了1个好方法。

我正在为eclipse开发一个编辑器插件.它在eclipse项目中的文件上工作正常,但是当通过"文件 - >打开文件"菜单(用例如Java文件工作文件)打开外部文件时,我得到的页面只显示水平蓝线和单词"ERROR".eclipse的错误日志为空,与.metadata目录中的日志文件一样.

什么可能导致这个?当我没有错误消息告诉我在哪里查看时,如何诊断错误?似乎没有办法从eclipse获得更详细的日志记录.

编辑:

我发现问题的根源与jamesh提到的一样,但不是ClassCastException - IDocument文本查看器根本没有显示的实例,因为StorageDocumentProvider.createDocument()返回null.这样做的原因是它只知道如何为实例创建文档org.eclipse.ui.IStorageEditorInput,但在这种情况下它获取的实例org.eclipse.ui.ide.FileStoreEditorInput,它不实现该接口,而是实现org.eclipse.ui.IURIEditorInput



1> Martin Lazar..:

我遇到了同样的问题,终于找到了适合我的解决方案.您必须提供2个不同的文档提供程序 - 首先为工作台中的文件扩展FileDocumentProvider,然后为工作区外的其他资源扩展TextFileDocumentProvider.然后根据编辑器doSetInput方法中的输入注册正确的提供程序,如下所示:

private IDocumentProvider createDocumentProvider(IEditorInput input) {
    if(input instanceof IFileEditorInput){
        return new XMLTextDocumentProvider();
    } else if(input instanceof IStorageEditorInput){
        return new XMLFileDocumentProvider();
    } else {
        return new XMLTextDocumentProvider();
    }
}

@Override
protected final void doSetInput(IEditorInput input) throws CoreException {
    setDocumentProvider(createDocumentProvider(input));
    super.doSetInput(input);
}

然后在你的新文档提供程序(扩展TextFileDocumentProvider)中插入somethnig,如下所示:

protected FileInfo createFileInfo(Object element) throws CoreException {
        FileInfo info = super.createFileInfo(element);
        if(info==null){
            info = createEmptyFileInfo();
        }
        IDocument document = info.fTextFileBuffer.getDocument();
        if (document != null) {

            /* register your partitioner and other things here 
                       same way as in your fisrt document provider */
        }
        return info;
    }

这对我有用:)最后我要提一下,我不是那么聪明,我从项目Amateras(eclipse的Opensource HTML编辑器插件)复制了这个解决方案

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有