【问题标题】:run.sh not running with process builderrun.sh 未与进程生成器一起运行
【发布时间】:2016-11-15 21:41:38
【问题描述】:

我有以下应该运行我的 run.sh 脚本的 java 代码。

public void executeScript() {
    try {
        Process p = null;
        ProcessBuilder pb = new ProcessBuilder("phoneManagement/src/run.sh");
        //pb.directory(new File("phoneManagement/src"));

        p = pb.start();     // Start the process.
        p.waitFor();               // Wait for the process to finish.
        System.out.println("Script executed successfully");
    } catch (Exception e) {
        e.printStackTrace();
    }

}

run.sh 看起来像这样:

#!/bin/sh
javac -cp ".:../../selenium/selenium-java-2.53.1.jar:../../selenium/selenium-server-standalone-2.53.1.jar:../../selenium/libs/*" phoneManagement.java
java -cp ".:../../selenium/selenium-java-2.53.1.jar:../../selenium/selenium-server-standalone-2.53.1.jar:../../selenium/libs/*" phoneManagement

如果我从命令行运行 .sh 脚本,它会执行应有的操作,并且我的 phoneManagement 会被编译和执行。

当我使用我的 executeScript 类时,我收到消息“脚本已成功执行”,尽管 run.sh 没有做它应该做的事情。

谁能帮我解决这个问题?

感谢

【问题讨论】:

  • 尝试使用完整路径。该命令很可能失败,但我认为它不会出现异常。尝试输出命令的输出。

标签: java bash shell


【解决方案1】:

您必须指定脚本"/foo/bar/script.sh" 的完整路径或使用以点开头的相对路径"./script.sh"。也不要忘记 chmod +x script.sh 并在脚本开头添加适当的 shebang #!/usr/bin/env bash

【讨论】:

    【解决方案2】:

    你可以试试:

    Process builder pb = new ProcessBuilder ("bash", "-c", "/path/to/shell/script/run.sh");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多