java - 将 Runtime.exec() 与 String [ ] 一起使用

标签 java process runtime.exec

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

<前>尝试 { 字符串命令=“bash bash/testbash.sh”; 运行时运行 = Runtime.getRuntime(); 进程 pr = run.exec(命令); pr.waitFor(); BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); 字符串行=“”; while ((line=buf.readLine())!=null) { System.out.println(行); } } 捕获(异常 e) { System.out.println("异常"+ e); e.printStackTrace(); } }

所以我打算创建一个 String[] 将命令和参数传递给 Runtime.exec(),如下所示:

<前>尝试 { String[] 命令={"bash bash/testbash.sh"}; 运行时运行 = Runtime.getRuntime(); 进程 pr = run.exec(命令); pr.waitFor(); BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); 字符串行=“”; while ((line=buf.readLine())!=null) { System.out.println(行); } } 捕获(异常 e) { System.out.println("异常"+ e); e.printStackTrace(); } }

这给了我这个错误:

异常 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:错误=2,没有这样的文件或目录
    在 java.lang.UNIXProcess.forkAndExec( native 方法)
    在 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"};

关于java - 将 Runtime.exec() 与 String [ ] 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724404/

相关文章:

linux - ps 是否有一组参数可以更清楚地显示 Java 进程?

c - 如何使用 shmget 或 ftok 检查共享内存是否存在?

在 Linux 中更改进程名称

java - 从 java 以编程方式执行 spark-submit

java - Linux 命令没有给出在 java 程序中调用的输出

java - 带有 JUnit 5 的 WELD SE 需要以编程方式启用 bean 发现

java - 如何释放文件的内容?

java - 是否可以在java 7中创建流和过滤器

java - Lucene 的 Ruby 替代品

Java - 使用 runtime.getRuntime().exec 运行 Excel