本帖最后由 ok0932 于 2009-11-13 00:45:23 编辑

解决方案 »

  1.   

    你可以试试直接catch(Exception e),如果这都不行,那可能就不行了。
    exec方法声明中的throws IOException应该指的是启动新进程的过程中可能发生的异常,当进程被启动起来,自己去运行之后,所发生的事情就不是JVM能控制的了。举个极端的例子,假如新进程是个格式化磁盘的程序,JVM如何控制得了?
      

  2.   

    谢谢楼上的哥们,不过我写的是个服务器程序,像这样的exe本身的异常必须对其处理,如果异常,系统会弹出应用程序异常提示窗口,有确定和取消,作为服务器,不可能人为去单击确定或者取消,没办法,只能解决了。我自己也感觉好像行不通,有点郁闷。
      

  3.   

    如果正常启动了 就调用process的getErrorStream() 方法 ,while循环监控是否有error信息输入 如果输入错误信息 那肯定是异常了吧 没用过,只是建议
      

  4.   

    getErrorStream 是 stderr 输出,不是这回事。
      

  5.   

      谢谢3楼朋友的指点,我利用你说的方法做了测试,很高兴地告诉你异常窗口没有再弹出,代码如下:
      
      try {
           String cmdSt = "cmd.exe /c " + workPath + "/" + fileName;
           process = Runtime.getRuntime().exec(cmdSt, null, dir);
           BufferedInputStream bis = new BufferedInputStream(process.getErrorStream());
           if (!bis.equals(null)) {
               process.destroy();
                }
           process.waitFor();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
      

  6.   

    public Process exec(String command,String[] envp) 错误流