diff --git a/node/capsule/src/main/java/CordaCaplet.java b/node/capsule/src/main/java/CordaCaplet.java index 99dd004ec9..240d9c6c37 100644 --- a/node/capsule/src/main/java/CordaCaplet.java +++ b/node/capsule/src/main/java/CordaCaplet.java @@ -34,6 +34,8 @@ public class CordaCaplet extends Capsule { private Config nodeConfig = null; private String baseDir = null; + private final List cmdLineAddOpens = new ArrayList<>(); + protected CordaCaplet(Capsule pred) { super(pred); } @@ -101,6 +103,7 @@ public class CordaCaplet extends Capsule { protected ProcessBuilder prelaunch(List jvmArgs, List args) { checkJavaVersion(); nodeConfig = parseConfigFile(args); + cmdLineAddOpens.addAll(jvmArgs.stream().filter(arg -> arg.startsWith("--add-opens")).collect(toList())); return super.prelaunch(jvmArgs, args); } @@ -119,7 +122,9 @@ public class CordaCaplet extends Capsule { @Override protected int launch(ProcessBuilder pb) throws IOException, InterruptedException { List args = pb.command(); - args.addAll(1, getNodeJvmArgs()); + List nodeJvmArgs = getNodeJvmArgs(); + nodeJvmArgs.addAll(cmdLineAddOpens); + args.addAll(1, nodeJvmArgs); pb.command(args); return super.launch(pb); } @@ -168,6 +173,7 @@ public class CordaCaplet extends Capsule { boolean defaultOutOfMemoryErrorHandling = true; try { List configJvmArgs = nodeConfig.getStringList("custom.jvmArgs"); + cmdLineAddOpens.addAll(configJvmArgs.stream().filter(arg -> arg.startsWith("--add-opens")).collect(toList())); jvmArgs.clear(); jvmArgs.addAll(configJvmArgs); log(LOG_VERBOSE, "Configured JVM args = " + jvmArgs);