diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
index 7db3e25..e2f87d7 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/JREsPreferencePage.java
@@ -25,7 +25,7 @@
 import org.eclipse.jdt.debug.ui.IJavaDebugUIConstants;
 import org.eclipse.jdt.internal.debug.ui.IJavaDebugHelpContextIds;
 import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
-import org.eclipse.jdt.internal.launching.StandardVM;
+import org.eclipse.jdt.internal.launching.StandardVMType;
 import org.eclipse.jdt.launching.AbstractVMInstall;
 import org.eclipse.jdt.launching.IVMInstall;
 import org.eclipse.jdt.launching.IVMInstallType;
@@ -192,16 +192,11 @@
 			}
 			if (vmver == null) {
 				IVMInstallType vmType = vmInstall.getVMInstallType();
-				IVMInstall vm = vmType.findVMInstall(vmInstall.getId());
-				if (vm == null) {
-					vm = vmType.createVMInstall(vmInstall.getId());
-				}
-				if (vm instanceof StandardVM) {
-					((StandardVM) vm).setInstallLocation(vmInstall.getInstallLocation());
-					vmver = ((StandardVM) vm).getJavaVersion();
+				if ( vmType instanceof StandardVMType) {
+					vmver = ((StandardVMType) vmType).readReleaseVersion(vmInstall.getInstallLocation());
 				}
 			}
-			if (vmver != null && JavaCore.compareJavaVersions(vmver, latest) > 0) {
+			if (vmver != null && vmver.length() != 0 && JavaCore.compareJavaVersions(vmver, latest) > 0) {
 				setMessage(NLS.bind(JREMessages.JREsPreferencePage_9, new String[] { compliance }), IMessageProvider.WARNING);
 				fCompliance.setVisible(true);
 			} else {
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/StandardVMPage.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/StandardVMPage.java
index f096b7e..758b403 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/StandardVMPage.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/jres/StandardVMPage.java
@@ -26,9 +26,8 @@
 import org.eclipse.jdt.internal.debug.ui.IJavaDebugHelpContextIds;
 import org.eclipse.jdt.internal.debug.ui.JavaDebugImages;
 import org.eclipse.jdt.internal.debug.ui.StatusInfo;
-import org.eclipse.jdt.internal.launching.StandardVM;
+import org.eclipse.jdt.internal.launching.StandardVMType;
 import org.eclipse.jdt.launching.AbstractVMInstallType;
-import org.eclipse.jdt.launching.IVMInstall;
 import org.eclipse.jdt.launching.IVMInstallType;
 import org.eclipse.jdt.launching.VMStandin;
 import org.eclipse.jface.dialogs.Dialog;
@@ -246,14 +245,9 @@
 			List<String> allVersions = JavaCore.getAllVersions();
 			String latest = allVersions.get(allVersions.size() - 1);
 			IVMInstallType vmType = fVM.getVMInstallType();
-			IVMInstall vm = vmType.findVMInstall(fVM.getId());
-			if (vm == null) {
-				vm = vmType.createVMInstall(fVM.getId());
-			}
-			if (vm instanceof StandardVM) {
-				((StandardVM) vm).setInstallLocation(getInstallLocation());
-				String vmver = ((StandardVM) vm).getJavaVersion();
-				if (vmver != null && JavaCore.compareJavaVersions(vmver, latest) > 0) {
+			if (vmType instanceof StandardVMType) {
+				String vmver = ((StandardVMType) vmType).readReleaseVersion(getInstallLocation());
+				if (vmver != null && vmver.length() != 0 && JavaCore.compareJavaVersions(vmver, latest) > 0) {
 					s = new StatusInfo(IStatus.INFO, JREMessages.JREsPreferencePage_9);
 				}
 			}
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 a3b7eef..ffabb5b 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
@@ -827,7 +827,7 @@
 		return null;
 	}
 
-	private synchronized String readReleaseVersion(File javaHome) {
+	public synchronized String readReleaseVersion(File javaHome) {
 
 		String version = ""; //$NON-NLS-1$
 
