Bug 548905 - [9] Launch Configuration and Build Path should interpret
.classpath in a similar way



Change-Id: I0d590b16fb74f6e3cffa6f2ef2c10a128505ff52
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
index 0c7be81..7f1a4d4 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/JavaRuntime.java
@@ -3492,9 +3492,18 @@
 				switch (optName) {
 					case IClasspathAttribute.ADD_EXPORTS:
 					case IClasspathAttribute.ADD_OPENS:
-					case IClasspathAttribute.ADD_READS:
-						buf.append(OPTION_START).append(optName).append(BLANK).append(classpathAttribute.getValue()).append(BLANK);
+					case IClasspathAttribute.ADD_READS: {
+						String readModules = classpathAttribute.getValue();
+						int equalsIdx = readModules.indexOf('=');
+						if (equalsIdx != -1) {
+							for (String readModule : readModules.split(":")) { //$NON-NLS-1$
+								buf.append(OPTION_START).append(optName).append(BLANK).append(readModule).append(BLANK);
+							}
+						} else {
+							buf.append(OPTION_START).append(optName).append(BLANK).append(readModules).append(BLANK);
+						}
 						break;
+					}
 					case IClasspathAttribute.PATCH_MODULE: {
 						String patchModules = classpathAttribute.getValue();
 						for (String patchModule : patchModules.split("::")) { //$NON-NLS-1$