Use args[] form of System.exec in order to resolve path to java on osx that may inclu...
[jalview.git] / src / jalview / bin / Jalview.java
index 062a22a..8203663 100755 (executable)
@@ -199,18 +199,35 @@ public class Jalview
             || System.getProperty("java.version").startsWith("1.9.");
     if (maxMemory < 1024 * 14)
     {
-      String cmd = "";
+      ArrayList<String> cmd = new ArrayList();
+      
+      boolean dontspawn=false;
       for (String r : args)
       {
-        cmd += (cmd.length() == 0) ? r : " " + r;
+        cmd.add(r);
+        if (r.indexOf("-Xmx")>-1) {
+          dontspawn=true;
+          break;
+        }
       }
-      if (cmd.indexOf("-Xmx") == -1)
+      if (!dontspawn)
       {
-        cmd = "-Xmx15G " + cmd;
-        System.err.println("relaunching with 15G: " + cmd);
-        Worker worker = Worker.jalviewDesktopRunner(false, cmd, 0,
-                "-Xmx15G"
-                        + (is9or10 ? " --add-modules=\"java.se.ee\"" : ""));
+        cmd.add("-Xmx15G");
+        String[] javargs=new String[1];
+        if (is9or10) {
+          javargs = new String[2];
+          javargs[1] = "--add-modules=java.se.ee";
+        }
+        javargs[0]="-Xmx15G";
+        
+        System.err.print("relaunching with 15G: ");
+        for (String r : cmd)
+        {
+          System.err.print(r + " ");
+        }
+        System.err.println("");
+        Worker worker = Worker.jalviewDesktopRunner(false,
+                cmd.toArray(new String[0]), 0, javargs);
         worker.doEcho();
         try
         {