Java 将Runtime.exec()与字符串[]一起使用

Java 将Runtime.exec()与字符串[]一起使用,java,process,runtime.exec,Java,Process,Runtime.exec,我试图执行一个bash脚本,该脚本从java中传递4个参数。我可以使用以下代码在没有参数的情况下完美地执行脚本: 因此,我要创建一个字符串[],将命令和参数传递给Runtime.exec(),如下所示: try { String[] command ={"bash bash/testbash.sh"}; Runtime run = Runtime.getRuntime(); Pr

我试图执行一个bash脚本,该脚本从java中传递4个参数。我可以使用以下代码在没有参数的情况下完美地执行脚本:

因此,我要创建一个字符串[],将命令和参数传递给Runtime.exec(),如下所示:

    try 
        {       
            String[] command ={"bash bash/testbash.sh"};
            Runtime run = Runtime.getRuntime();
            Process pr = run.exec(command);
            pr.waitFor();
            BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
            String line = "";
            while ((line=buf.readLine())!=null) 
            {
                System.out.println(line);
            }
         }  
        catch (Exception e) 
        {  
            System.out.println("Exception " + e);
            e.printStackTrace();
        }  
    }

这给了我一个错误:

Exception java.io.IOException:无法运行程序“bash-bash/testbash.sh”:错误=2,没有这样的文件或目录
java.io.IOException:无法运行程序“bash-bash/testbash.sh”:错误=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
位于java.lang.Runtime.exec(Runtime.java:615)
位于java.lang.Runtime.exec(Runtime.java:483)
位于bashExecuter.main(bashExecuter.java:43)
原因:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess.forkAndExec(本机方法)
位于java.lang.UNIXProcess(UNIXProcess.java:135)
在java.lang.ProcessImpl.start(ProcessImpl.java:130)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
... 3个以上

这对我来说毫无意义。bash文件显然存在,因为我只是将它与String命令一起使用,但是当我将相同的东西与String[]命令一起使用时,它就不存在了?如何传递带参数的命令

String[]command={“bash-bash/testbash.sh”}


我明白了。命令行中的所有空格现在都成为字符串[]的不同单元格。因此String command=“bash-bash/testbash.sh”变成String[]command={“bash”,“bash/testbash.sh”};把它作为答案贴出来,然后接受它。允许回答自己的问题。
    try 
        {       
            String[] command ={"bash bash/testbash.sh"};
            Runtime run = Runtime.getRuntime();
            Process pr = run.exec(command);
            pr.waitFor();
            BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
            String line = "";
            while ((line=buf.readLine())!=null) 
            {
                System.out.println(line);
            }
         }  
        catch (Exception e) 
        {  
            System.out.println("Exception " + e);
            e.printStackTrace();
        }  
    }
Exception java.io.IOException: Cannot run program "bash bash/testbash.sh": error=2, No such file or directory
java.io.IOException: Cannot run program "bash bash/testbash.sh": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
    at java.lang.Runtime.exec(Runtime.java:615)
    at java.lang.Runtime.exec(Runtime.java:483)
    at bashExecuter.main(bashExecuter.java:43)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
    ... 3 more
String[] command ={"bash", "bash/testbash.sh"};