在Eclipse插件中打开文件到某一行

时间:2014-08-21 07:40:16

标签: java eclipse plugins eclipse-plugin

我正在写一个插件,当按下按钮时必须在某一行打开一个文件。 我有以下代码在某一行打开文件。

        String filePath = "file path" ;
            final IFile inputFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(Path.fromOSString(filePath));
            if (inputFile != null) {
                IWorkbenchPage page1 = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
                IEditorPart openEditor11 = IDE.openEditor(page1, inputFile);
            }


            int Line = 20;

                    if (openEditor11 instanceof ITextEditor) {
                        ITextEditor textEditor = (ITextEditor) openEditor ;
                        IDocument document= textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
                        textEditor.selectAndReveal(document.getLineOffset(Line - 1), document.getLineLength(Line-1));
                    }

我的问题是if语句中的变量openEditor11给出了错误:openEditor11无法解析为变量。可能是什么问题?

2 个答案:

答案 0 :(得分:4)

这是因为在完成条件时,嵌套在if语句中的变量声明超出了范围。因此,该变量被释放,并且在您的第二个语句中不再存在。

您应该先声明它以避免此错误:

IEditorPart openEditor11;
String filePath = "file path" ;
final IFile inputFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(Path.fromOSString(filePath));
if (inputFile != null) {
    IWorkbenchPage page1 = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    openEditor11 = IDE.openEditor(page1, inputFile);
}


int Line = 20;

if (openEditor11 instanceof ITextEditor) {
    ITextEditor textEditor = (ITextEditor) openEditor ;
    IDocument document= textEditor.getDocumentProvider().getDocument(textEditor.getEditorInput());
    textEditor.selectAndReveal(document.getLineOffset(Line - 1), document.getLineLength(Line-1));
}

到达第二个条件块时,如果第一个条件不适用,编辑器可能为null,但这不是问题,因为instanceof在null上返回false。

答案 1 :(得分:1)

实际上,根据https://wiki.eclipse.org/FAQ_How_do_I_open_an_editor_on_a_file_in_the_workspace%3F

有一个更简单的解决方案
ADD @project.artifactId@-@project.version@.jar app.jar