Runtime.getRuntime()。exec在java环境中找不到文件

时间:2015-08-10 14:58:29

标签: java

我在Processing中启动了一个项目,然后发现我需要更多功能。我有以下功能在Processing中运行良好但现在在java环境中我收到错误。

功能:

void camSummary() {
        System.out.format("Cam summary");
          String commandToRun = "./camSummary.sh"; 
          File workingDir = new File(main.path);
          try {

            Process p = Runtime.getRuntime().exec(commandToRun, null, workingDir);
            int i = p.waitFor();
            if (i==0) {
              BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
              while ( (returnedValues = stdInput.readLine ()) != null) {
                  System.out.format(returnedValues);
              }
            }
          }
          catch(Throwable t) {
              System.out.format("error: " + t + "\n");  
          }
        }

错误:

  

无法运行程序“camSummary.sh”(在目录中   “/ Users / lorenzimmer / Documents / RC / CamSoft /”):错误= 2,没有这样的文件或   目录

我发现从处理到java有一些非常小的差异。我想知道这个功能是否需要稍微调整才能正常运行。

非常感谢任何帮助。

洛伦

1 个答案:

答案 0 :(得分:0)

Runtime.exec不会调用shell,所以你必须显式调用一个(bash,sh等)

试试这个:

更改String commandToRun = "./camSummary.sh";

String[] commandToRun = {"bash", "-c", "/path/to/camSummary.sh"};

String[] commandToRun = {"sh", "/path/to/camSummary.sh"};

然后改变

Process p = Runtime.getRuntime().exec(commandToRun, null, workingDir);

Process p = Runtime.getRuntime().exec(commandToRun);

在一行中:Process p = Runtime.getRuntime().exec(new String[] {"bash", "-c", "/path/to/script"});