【问题标题】:Calling a simple shell script from java is not working从 java 调用简单的 shell 脚本不起作用
【发布时间】:2013-09-22 08:18:38
【问题描述】:

我的 Shell 脚本名为“hello”

#This is a shell script
echo "Hello Shell World!"

我的 Java 代码,

Runtime.getRuntime().exec(new String[]{"./hello"});

我的 Java 代码执行没有错误,但我没有看到“Hello Shell World!”正在终端上打印。

我相信我的脚本正在执行,因为我没有收到类似的错误, “hello 无法执行,没有这样的文件或目录”。

我在 Linux 机器 Ubuntu 上执行此操作。谢谢!

【问题讨论】:

标签: java linux bash shell terminal


【解决方案1】:

从 Java 运行外部程序时,输出不会到达(并且输入不会来自)Java 应用程序的终端。

外部程序(您的脚本)的输入和输出流(STDIN、STDOUT、STDERR)被定向到(从)可从 Java Process 访问的 InputStreams 和 OutputStreams,这是在您执行 @987654322 时创建的@

【讨论】:

  • 非常感谢!您的第一行答案说明了一切。
【解决方案2】:

您应该使用阅读器来捕获命令的输出:

Process p=Runtime.getRuntime().exec(new String[]{"./hello"});
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null) {
    System.out.println(line);
    line=reader.readLine();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多