2

「hello」という名前のシェル スクリプト

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

私のJavaコード、

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

私の Java コードはエラーなしで実行されますが、「Hello Shell World!」は表示されません。端末に印刷されています。

「こんにちは、実行できません。そのようなファイルまたはディレクトリはありません」などのエラーが発生しないため、スクリプトが実行されていると思います。

これをLinuxマシンのUbuntuで実行しています。ありがとう!

4

2 に答える 2

2

Java から外部プログラムを実行すると、出力は Java アプリケーションの端末に送られません (入力は送信されません)。

外部プログラム (スクリプト) への入力および出力ストリーム (STDIN、STDOUT、STDERR) は、Java プロセスを実行するときに作成されるJavaプロセスからアクセスできる InputStreams および OutputStreams に (から) 送信されます。exec(...)

于 2013-09-17T18:48:14.727 に答える
1

コマンドの出力をキャプチャするには、リーダーを使用する必要があります。

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();
}
于 2013-09-17T18:48:02.580 に答える