スクリプトの作成に成功した後、必要な情報を含むファイルを生成する単一のコマンドを持つシェルスクリプトがあります。
そのコマンドを直接実行するか、コマンドラインからスクリプト自体を実行すると、ファイルが生成されます。
しかし、ファイルを使用して Java コードから同じスクリプトを実行しようとすると、Runtime.getRuntime().exec(cmd)
生成されません。この行の直前と直後のトレースが期待どおりに表示され、スクリプトの実行で例外がスローされていないことが示されます。
どこが間違っているのか、何が欠けているのでしょうか? 助けてください!!!
例 これは実行しようとしているコードです
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Scripttest {
public static void main(String args[])
{
try{
String cmd="ls|grep sys";
Process p=Runtime.getRuntime().exec(cmd);
System.out.println("done");
final BufferedReader input = new BufferedReader(new InputStreamReader( p.getInputStream()));
String line = null;
while ((line = input.readLine()) != null)
System.out.println("proc: " + line);
}
catch(Exception e)
{
System.out.println("Exception is"+e);
}
}
}
そして出力iam取得はこれです
java Scripttest
Exception isjava.io.IOException: Cannot run program "ls|grep": error=2, No such file or directory
cmd は実行されませんが、実行されない理由がよくわかりません。