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())