简体   繁体   English

使用Texlipse和Miktex 2.9的NullPointerException

[英]NullPointerException with Texlipse and Miktex 2.9

When using Texlipse together with Miktex 2.9 on my Windows machine, the system throws a NullPointerExcpetion each time the document is compiled. 在我的Windows机器上将Miklipse与Miktex 2.9一起使用时,系统会在每次编译文档时抛出NullPointerExcpetion。

The problem disappeared after I have updated the Miktex 2.9 distribution using the Update manager. 使用更新管理器更新Miktex 2.9发行版后问题消失了。 Hope this helps others who have the same problem. 希望这有助于其他有同样问题的人。

Regards, Pwndrian 此致,Pwndrian

To me it happens too. 对我来说也是如此。

This is a workaround I did, however I think that it is not quite optimal solution. 这是我所做的一种解决方法,但我认为这不是最佳解决方案。 I saw that there is a bug opened http://sourceforge.net/tracker/?func=detail&aid=3306779&group_id=133306&atid=726818 . 我看到有一个错误打开http://sourceforge.net/tracker/?func=detail&aid=3306779&group_id=133306&atid=726818

There is the class net.sourceforge.texlipse.builder.TExlipseBuilder , I made the following changes to overcome this problem(Please note the differences in both functions). net.sourceforge.texlipse.builder.TExlipseBuilder类,我做了以下更改来克服这个问题(请注意两个函数的差异)。 The problem is that in TExlipsePlugin in the function getCurrentProject the actEditor is null since there is no active editor when importing projects or when pressing on clean while no editor is open. 问题是在函数getCurrentProject中的TExlipsePlugin中,actEditor为null,因为导入项目时没有活动编辑器,或者在没有编辑器打开时按下clean。

@Override
protected IProject[] build(int kind, Map args, IProgressMonitor monitor)
        throws CoreException {      
    BuilderRegistry.clearConsole();
    IWorkbenchPage page = TexlipsePlugin.getCurrentWorkbenchPage();
    IEditorPart actEditor = null;
    if (page.isEditorAreaVisible()
         && page.getActiveEditor() != null) {
        actEditor = page.getActiveEditor();
    }
    if ( actEditor == null )
        return null;

    if (isUpToDate(getProject()))
        return null;

    Object s = TexlipseProperties.getProjectProperty(getProject(), TexlipseProperties.PARTIAL_BUILD_PROPERTY);
    if (s != null) {
        partialBuild(monitor);
    } else {
        buildFile(null, monitor);
    }

    return null;
}

/**
 * Clean the temporary files.
 * 
 * @see IncrementalProjectBuilder.clean
 */
@Override
protected void clean(IProgressMonitor monitor) throws CoreException {
    IProject project = getProject();
    BuilderRegistry.clearConsole();
    IWorkbenchPage page = TexlipsePlugin.getCurrentWorkbenchPage();
    IEditorPart actEditor = null;
    if (page.isEditorAreaVisible()
         && page.getActiveEditor() != null) {
        actEditor = page.getActiveEditor();
    }
    if ( actEditor == null )
        return;        

    // reset session variables
    TexlipseProperties.setSessionProperty(project, TexlipseProperties.SESSION_LATEX_RERUN, null);
    TexlipseProperties.setSessionProperty(project, TexlipseProperties.SESSION_BIBTEX_RERUN, null);
    TexlipseProperties.setSessionProperty(project, TexlipseProperties.BIBFILES_CHANGED, null);

    // check main file
    String mainFile = TexlipseProperties.getProjectProperty(project, TexlipseProperties.MAINFILE_PROPERTY);
    if (mainFile == null || mainFile.length() == 0) {
        // main tex file not set -> nothing builded -> nothing to clean
        return;
        }

    cleanTempDir(monitor, project);
    cleanOutput(monitor, project);

    monitor.subTask(TexlipsePlugin.getResourceString("builderSubTaskCleanMarkers"));

    this.deleteMarkers(project);
    project.refreshLocal(IProject.DEPTH_INFINITE, monitor);
    monitor.done();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM