diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java index 78c2410264..570951573c 100644 --- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java +++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/EECompilationParticipant.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.jdt.internal.launching; +import java.lang.Runtime.Version; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -283,7 +284,12 @@ public static String getCompilerCompliance(IVMInstall2 vMInstall) { } else if (matchesMajorVersion(version, JavaCore.VERSION_1_1)) { return JavaCore.VERSION_1_3; } - return null; + try { + Version v = Version.parse(version); + return Integer.toString(v.feature()); + } catch (IllegalArgumentException ex) { + return null; + } } private static boolean matchesMajorVersion(String currentVersion, String knownVersion) { diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMType.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMType.java index 07cce79c22..5e77fbeaad 100644 --- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMType.java +++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/StandardVMType.java @@ -21,6 +21,7 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.UncheckedIOException; +import java.lang.Runtime.Version; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; @@ -854,6 +855,10 @@ public static URL getDefaultJavadocLocation(String version) { } else if (version.startsWith(JavaCore.VERSION_1_3)) { // archived: http://download.oracle.com/javase/1.3/docs/api/ return new URL("https://docs.oracle.com/javase/1.5.0/docs/api/"); //$NON-NLS-1$ + } else { + // heurisitc for not-yet declared versions + var v = Version.parse(version); + return new URI("https://docs.oracle.com/en/java/javase/" + v.feature() + "/docs/api/").toURL(); //$NON-NLS-1$ //$NON-NLS-2$ } } catch (URISyntaxException | MalformedURLException e) { } diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/EnvironmentsManager.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/EnvironmentsManager.java index 76139e1400..808dfd0aee 100644 --- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/EnvironmentsManager.java +++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/internal/launching/environments/EnvironmentsManager.java @@ -34,9 +34,9 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; -import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.internal.launching.LaunchingPlugin; @@ -253,6 +253,16 @@ private String getExecutionEnvironmentCompliance(IExecutionEnvironment execution return JavaCore.VERSION_1_1; } else if (desc.indexOf("1.0") != -1) { //$NON-NLS-1$ return "1.0"; //$NON-NLS-1$ + } else { + // an optimistic strategy for not-yet-declared versions + int lastNumberIndex = desc.length() - 1; + while (lastNumberIndex >= 0 && Character.isDigit(desc.charAt(lastNumberIndex))) { + lastNumberIndex--; + } + lastNumberIndex++; // fix consumed non-digit char + if (lastNumberIndex < desc.length()) { + return desc.substring(lastNumberIndex, desc.length()); + } } return JavaCore.VERSION_1_3; }