我的java用exec("r.sh");来调用shell,如果shell只是简单的命令,如touch一个文件,没有问题。
但是如果我调用的shell中调用了另一个程序,如r.sh中 ./com.Send &的时候
会报找不到这个文件
java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at ShellTest.main(ShellTest.java:8)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 4 more我用的是绝对路径,单独执行shell没问题,也都是unix字符格式
但是如果我调用的shell中调用了另一个程序,如r.sh中 ./com.Send &的时候
会报找不到这个文件
java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at ShellTest.main(ShellTest.java:8)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 4 more我用的是绝对路径,单独执行shell没问题,也都是unix字符格式
{
Runtime rt = Runtime.getRuntime();
try {
Process p = rt.exec("/home/r.sh");
if(p.waitFor() != 0)
System.out.println("error");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} p.waitFor() 值为0 但是shell没有输出任何信息
但是我还想要日志 不知道怎么弄呢?