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); diff --git a/node/capsule/src/main/resources/node-jvm-args.txt b/node/capsule/src/main/resources/node-jvm-args.txt index eb3b13817f..965a2ea188 100644 --- a/node/capsule/src/main/resources/node-jvm-args.txt +++ b/node/capsule/src/main/resources/node-jvm-args.txt @@ -12,6 +12,7 @@ --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED +--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/java.util.regex=ALL-UNNAMED --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED