【问题标题】:Execute a shell script in runtime of Java code from Eclipse在 Eclipse 的 Java 代码运行时执行 shell 脚本
【发布时间】:2013-03-07 11:58:25
【问题描述】:

我有一个要在 Eclipse 中从 Java 代码执行的 shell 脚本。

我可以使用外部工具来运行脚本,但我希望脚本在 Java 代码执行期间运行,即 Java 代码应该调用脚本。

之前我使用“Process Builder”来执行此操作,但似乎 Eclipse 不支持该方法,因为当我授予它所有权限时它会显示“找不到文件”。

知道如何在 Eclipse 中从 Java 代码运行脚本吗?

代码如下:

        String line1 = null;
        String target = new String("/home/aditya_s/workspace/rs-test/src/iperf_parse.sh " + host + " " + "9000");
        while(line1 == null)
        {
            Process p1 = Runtime.getRuntime().exec(target);
            BufferedReader input1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));
            System.out.println("Ran");
            line1 = input1.readLine();
            p1.destroy();
        }
        BW = Double.parseDouble(line1);

提示:右键单击 shell 脚本并转到“属性”。将“读/写/执行”权限授予“所有者”。默认情况下,不存在“执行”权限。因此,您可能会收到类似“无法执行 script.sh”的错误。

【问题讨论】:

  • 发布您的代码,否则我们无能为力。

标签: java eclipse shell


【解决方案1】:

Eclipse 像往常一样运行您的 java 程序,因此 ProcessBuilder 也可以正常工作。您可能走错了路。如果路径是相对的,它将相对于System.getProperty("user.dir")

【讨论】:

  • 嗨。我现在已经给出了脚本的完整路径并且 exec() 命令有效。但问题是 shell 脚本无法捕获命令的输出。当我在终端中运行相同的代码时它可以工作,但在 Eclipse 中它会失败。代码在上面的问题中更新。
  • 如果您使用的是 Runtime.exec,请参阅 this,或者如果您使用的是 ProcessBuilder,请参阅 this。在任何情况下,您都需要在数组中提供命令和参数。在您的情况下,这将起作用:new String[] { "/home/aditya_s/workspace/rs-test/src/iperf_parse.sh", host, "9000" }
【解决方案2】:

你应该可以使用下面的,用你要运行的脚本替换shellscript。

String s = "shellscript";
Process proc = Runtime.getRuntime().exec(s); 

【讨论】:

    【解决方案3】:

    你应该看看ProcessBuilder

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2014-11-20
      • 2021-12-09
      相关资源
      最近更新 更多