Fix for Bug 405051 - JavaModel.refreshExternalArchives needs to happen
before search is primed
Signed-off-by: Troy Bishop <tjbishop@ca.ibm.com>
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
index ab5d524..7445fb4 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/core/JavaCore.java
@@ -4051,6 +4051,21 @@
// Creation of external folder project failed. Log it and continue;
Util.log(jme, "Error while processing external folders"); //$NON-NLS-1$
}
+
+ // ensure external jars are refreshed (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=93668)
+ // before search is initialized (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=405051)
+ final JavaModel model = manager.getJavaModel();
+ try {
+ if (monitor != null)
+ monitor.subTask(Messages.javamodel_refreshing_external_jars);
+ model.refreshExternalArchives(
+ null/*refresh all projects*/,
+ monitor == null ? null : new SubProgressMonitor(monitor, 1) // 1% of the time is spent in jar refresh
+ );
+ } catch (JavaModelException e) {
+ // refreshing failed: ignore
+ }
+
// initialize delta state
if (monitor != null)
monitor.subTask(Messages.javamodel_initializing_delta_state);
@@ -4105,7 +4120,6 @@
} catch (CoreException e) {
// could not read version number: consider it is new
}
- final JavaModel model = manager.getJavaModel();
String newVersionNumber = Byte.toString(State.VERSION);
if (!newVersionNumber.equals(versionNumber)) {
// build state version number has changed: touch every projects to force a rebuild
@@ -4139,19 +4153,6 @@
Util.log(e, "Could not persist build state version number"); //$NON-NLS-1$
}
}
-
- // ensure external jars are refreshed (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=93668)
- try {
- if (monitor != null)
- monitor.subTask(Messages.javamodel_refreshing_external_jars);
- model.refreshExternalArchives(
- null/*refresh all projects*/,
- monitor == null ? null : new SubProgressMonitor(monitor, 1) // 1% of the time is spent in jar refresh
- );
- } catch (JavaModelException e) {
- // refreshing failed: ignore
- }
-
} finally {
if (monitor != null) monitor.done();
}