以编程方式在编辑器中打开文件:org.eclipse.ui.PartInitException:无法初始化编辑器

时间:2019-11-21 22:48:56

标签: java eclipse junit eclipse-plugin eclipse-cdt

我的目标是为我的Eclipse插件编写一个JUnit插件测试。测试应打开一个现有项目并在我的编辑器中打开一个文件。该文件的内容类型与plugin.xml文件中的我的编辑器相关联。

使用Wiki页面How do I open an editor progrmamatically中的代码段,我得到了:

@Test
public void test() {
    IProject project;
    try {
        URI locationURI = workspace.getRoot().getLocationURI();
        project = ResourcesPlugin.getWorkspace().getRoot().getProject("/MyDemoProject");
        if (!project.exists()) {
            assert(false);
            return;
        }
        project.open(null); // maybe not necessary. No action of already open.
    } catch (CoreException e) {
        assert(false);
        return;
    }

    IFile file = project.getFile("/model/test/Adapter.grr");
    IFileStore fileStore;
    try {
        fileStore = EFS.getStore(file.getLocationURI());
        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        IDE.openEditorOnFileStore( page, fileStore );
    } catch (Exception e1) {
        e1.printStackTrace();
    }
}

我看到在运行中的日食中打开编辑器时,方法IDE.openEditorOnFileStore()也被调用。但是在JUnit插件测试中,调用导致异常。

org.eclipse.ui.PartInitException: Editor could not be initialized.
  at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3212)
  at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3221)
  at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:353)
  at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:340)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  ...

这意味着对getSite().getWorkbenchWindow().run(false, true, runnable);中的org.eclipse.ui.texteditor.AbstractTextEditor的调用失败。在run方法内部,是调用doSetInput(input);引发NullpointerException。最后,在类FileStoreFileBuffer中引发了异常:create(EFS.getStore(URIUtil.toURI(getLocation())), monitor);方法中对create的调用失败,可能是因为位置不正确(调试器显示了{{1} }。

我不知道为什么,因为文件路径正确。我应该提到我正在使用自定义FileStore实现,该实现具有方法/,可以帮助我检查是否可以找到和读取文件。

我注意到呼叫String getContent()成功返回了有效的page.openEditor(new FileEditorInput(file), "myeditorID");。但是我收到一条错误消息

  

responseCode!= HttpURLConnection.HTTP_OK(原为404)

我假设我将需要fileStore变体,因为文件保留在我通过FileSystem实现访问的服务器上。

0 个答案:

没有答案