Added support for java 9 args in .ini file

Signed-off-by: Viktoria Dlugopolskaya <viksnsk@gmail.com>
diff --git a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
index 608b58e..1b9e11b 100644
--- a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
+++ b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
@@ -28,6 +28,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -984,9 +985,59 @@
 			return null;
 		}
 
+		removeUnsupportedVMArgs(lines);
+
 		return Q7LaunchDelegateUtils.joinCommandArgs(lines);
 	}
 
+	private static final String VMARG_ADD_MODULES = "--add-modules";
+	private static final String VMARG_PERMIT_ILLEGAL_ACCESS = "--permit-illegal-access";
+
+	private void removeUnsupportedVMArgs(List<String> lines) {
+		String[] javaVersions = getJavaVersions();
+
+		// remove args was added into .ini file to support java 9
+		// see more: https://bugs.eclipse.org/bugs/show_bug.cgi?id=493761
+		if ((getMajorVersion(javaVersions) == 1 && getMinorVersion(javaVersions) < 9)
+				|| getMajorVersion(javaVersions) < 9) {
+			Iterator<String> iterator = lines.iterator();
+			while (iterator.hasNext()) {
+				String line = iterator.next();
+				if (line.startsWith(VMARG_ADD_MODULES)
+						|| line.startsWith(VMARG_PERMIT_ILLEGAL_ACCESS)) {
+					iterator.remove();
+				}
+			}
+		}
+	}
+
+	private static String[] getJavaVersions() {
+		String javaVersion = System.getProperty("java.version");
+		return javaVersion.split("\\.|-"); // '.' and '-' are separators
+	}
+
+	private static int getMajorVersion(String[] versions) {
+		if (versions.length < 1) {
+			return 0;
+		}
+		try {
+			return Integer.valueOf(versions[0]);
+		} catch (NumberFormatException e) {
+			return 0;
+		}
+	}
+
+	private static int getMinorVersion(String[] versions) {
+		if (versions.length < 2) {
+			return 0;
+		}
+		try {
+			return Integer.valueOf(versions[1]);
+		} catch (NumberFormatException e) {
+			return 0;
+		}
+	}
+
 	public String getTemplateConfigLocation() {
 		File iniFile = new File(getTargetPlatformProfilePath(), "configuration/config.ini"); //$NON-NLS-1$
 		if (!iniFile.exists())