Bug 522333 - [9] "Error: Could not find or load main class
o.c.p.c.l.Launcher" when running Eclipse Java 9 Beta

Change-Id: Ifcc2adf04b9a15883eec5b929b4e189ef22f7d78
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
index 1430738..ae0c1e6 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/AbstractJavaLaunchConfigurationDelegate.java
@@ -416,14 +416,16 @@
 
 		List<String> userEntries = new ArrayList<>(entries.length);
 		Set<String> set = new HashSet<>(entries.length);
-		for (int i = 0; i < entries.length; i++) {
-				String location = entries[i].getLocation();
-				if (location != null) {
+		for (IRuntimeClasspathEntry entry : entries) {
+			String location = entry.getLocation();
+			if (location != null) {
+				if (entry.getClasspathProperty() != IRuntimeClasspathEntry.MODULE_PATH) {
 					if (!set.contains(location)) {
 						userEntries.add(location);
 						set.add(location);
 					}
 				}
+			}
 		}
 		return userEntries.toArray(new String[userEntries.size()]);
 	}
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
index 1d20f4e..87c363c 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaLaunchDelegate.java
@@ -70,13 +70,10 @@
 			// VM-specific attributes
 			Map<String, Object> vmAttributesMap = getVMSpecificAttributesMap(configuration);
 
-			// Classpath
+			// Bug 522333 :to be used for modulepath only for 4.7.* 
 			String[][] paths = getClasspathAndModulepath(configuration);
-
-
-
 			// Create VM config
-			VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, paths[0]);
+			VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, getClasspath(configuration));
 			runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
 			runConfig.setEnvironment(envp);
 			runConfig.setVMArguments(execArgs.getVMArgumentsArray());
@@ -92,11 +89,13 @@
 				}
 			}
 
-			// Bootpath
-			runConfig.setBootClassPath(getBootpath(configuration));
-
-			// module path
-			runConfig.setModulepath(paths[1]);
+			if (!JavaRuntime.isModularConfiguration(configuration)) {
+				// Bootpath
+				runConfig.setBootClassPath(getBootpath(configuration));
+			} else {
+				// module path
+				runConfig.setModulepath(paths[1]);
+			}
 
 			// check for cancellation
 			if (monitor.isCanceled()) {