我的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字符格式

解决方案 »

  1.   

    现在找到shell了 但是调用了好像没调用一样 连echo信息都没打出来 没报异常
      

  2.   

    在shell中pwd一下看一看相对路径 shell中调用的shell可以使用绝对路径
      

  3.   

    public static void main(String[] args) 
    {
    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没有输出任何信息
      

  4.   

    绝对路径/com.Send &
      

  5.   

    问题找到了 是由于我用了 nohup /home/r.h & 这个nohup加上就会直接好像忽略的似地不知道为什么,
    但是我还想要日志 不知道怎么弄呢?
      

  6.   

    晕,nohup就不会输出了噻,那日志就输出到文件中噻
      

  7.   

    nohup 会输出到nohup.out文件里面,自己去抓就可以了吧