From 48dfd4477f77544c6f45fe5c10599fddab27959c Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Wed, 23 Jul 2025 19:03:24 +0200 Subject: [PATCH] Wait for deferred PDE classpath initializer before initial reconcile - This avoids the display the transient error annotations that are the result of PDE's deferring classpath initialization to a background job. --- .../org/eclipse/jdt/internal/ui/text/JavaReconciler.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaReconciler.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaReconciler.java index 6d3635fb48c..ba6bf2534fc 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaReconciler.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaReconciler.java @@ -23,6 +23,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.ICoreRunnable; +import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.resources.IMarker; @@ -49,6 +50,7 @@ import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.spelling.SpellingService; +import org.eclipse.jdt.core.ClasspathContainerInitializer; import org.eclipse.jdt.core.ElementChangedEvent; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IElementChangedListener; @@ -394,6 +396,11 @@ protected void reconcilerReset() { */ @Override protected void initialProcess() { + try { + Job.getJobManager().join(ClasspathContainerInitializer.class, null); + } catch (OperationCanceledException | InterruptedException e) { + // Ignore + } synchronized (fMutex) { super.initialProcess(); }