From 2d6c8f720cb27421f68c5b3a829d2438fe001c4c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Wed, 20 Jul 2016 22:36:45 -0700 Subject: [PATCH] Added support for jvm parameters (-Dkey=value) --- .../main/java/com/beust/kobalt/wrapper/Main.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java b/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java index 9df01ca2..9e7b1929 100644 --- a/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java +++ b/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java @@ -78,7 +78,7 @@ public class Main { if (! exit) { Path kobaltJarFile = installDistribution(); if (!noLaunch) { - result = launchMain(kobaltJarFile, kobaltArgv.toArray(new String[kobaltArgv.size()])); + result = launchMain(kobaltJarFile, kobaltArgv); } } return result; @@ -477,13 +477,22 @@ public class Main { System.out.println("[Wrapper error] *** " + s); } - private int launchMain(Path kobaltJarFile, String[] argv) throws IOException, InterruptedException { + private int launchMain(Path kobaltJarFile, List argv) throws IOException, InterruptedException { List args = new ArrayList<>(); args.add("java"); args.add("-Dfile.encoding=" + Charset.defaultCharset().name()); + // jvm parameters must go before -jar + Iterator i = argv.iterator(); + while (i.hasNext()) { + String arg = i.next(); + if (arg.matches("-D(.+?)=(.*)")) { + args.add(arg); + i.remove(); + } + } args.add("-jar"); args.add(kobaltJarFile.toFile().getAbsolutePath()); - Collections.addAll(args, argv); + Collections.addAll(args, argv.toArray(new String[argv.size()])); ProcessBuilder pb = new ProcessBuilder(args); pb.inheritIO();