0

WindowsマシンでTexlipseをMiktex2.9と一緒に使用すると、ドキュメントがコンパイルされるたびにシステムがNullPointerExcpetionをスローします。

UpdateManagerを使用してMiktex2.9ディストリビューションを更新した後、問題は解消されました。これが同じ問題を抱えている他の人に役立つことを願っています。

よろしく、Pwndrian

4

1 に答える 1

2

私にとってもそれは起こります。

これは私が行った回避策ですが、完全に最適なソリューションではないと思います。http://sourceforge.net/tracker/?func=detail&aid=3306779&group_id=133306&atid=726818でバグが開いているのを見ました。

クラスがありますが、net.sourceforge.texlipse.builder.TExlipseBuilderこの問題を解決するために以下の変更を加えました(両方の機能の違いに注意してください)。問題は、関数getCurrentProjectのTExlipsePluginで、プロジェクトをインポートするとき、またはエディターが開いていないときにcleanを押すと、アクティブなエディターがないため、actEditorがnullになることです。

@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();
}
于 2011-07-12T08:35:37.513 に答える