正在做一个项目需要用java执行一个外部.sh脚本,该脚本运行另一个java包,有没有大侠知道如何获取由shell脚本执行的jar包所生成的信息以及抛出的错误? 我试了满久,只能获取shell脚本生成的信息,无法获取由它执行的java程序所生成的信息 :(
多谢各位了!

解决方案 »

  1.   

    Runtime.getRuntime().exec("");
    好像是这么写的吧,用这个相当于在dos界面下执行命令,返回一个Process类型的对象。该对象有取得outputstream之类的方法。可以取得相当于在dos界面输出的内容。
      

  2.   

    多谢大家热心, 我用了Runtime.getRuntime().exec(""); 并且能够用getInputStream()捕捉到了执行脚本 的输出,但是我还想捕捉脚本所执行的java程序的抛出,比如说:
    本程序A--执行-->脚本B-->call-->java程序C<---抛出异常我想在A获得C抛出的异常,不知道有没有方法能够做得到?
      

  3.   

    建议在java程序里面直接运行那个脚本调用的java包
      

  4.   

    Process p = Runtime.getRuntime().exec("C:\\TEMP\\A.bat 2>&1");
    InputStream os = p.getInputStream();
    int c = 0;
    while((c=os.read())!=-1)
    System.out.print((char)c);搜索一下重定向
      

  5.   

    解决了,找到了2各解决方法,一个是shell重新定向输出,将error输出到指定log,或者用ProcessBuilder.redirectErrorStream 实现错误信息捕获