process.exec没有返回正确的代码

时间:2010-08-13 16:21:45

标签: java processbuilder

我有一个带有代码的Java程序:

public class Test1 {
public static void main(String args[]) throws InterruptedException,
        IOException {
    String cmd = "cmd /c start test.bat";
    Process p = Runtime.getRuntime().exec(cmd); 
    InputStream stderr = process.getErrorStream();
    InputStreamReader isr = new InputStreamReader(stderr);
    BufferedReader br = new BufferedReader(isr);
    String line = null;

    while ((line = br.readLine()) != null){
        System.out.println(line);}

      p.waitFor(); 
      int exitVal = p.exitValue(); 
      System.out.println(exitVal);

} }

test.bat执行另一个具有以下代码的程序:

public class ConnectionTest {

public Connection getConn throws SQLException{
      Connection conn = null;
      Statement st = null;
      ResultSet rs = null;
      String driverName = "com.ibm.db2.jcc.DB2Driver22222";
        try {
                Class.forName(driverName).newInstance();
            } catch (Exception e) {
                e.printStackTrace();

                System.exit(1);
                                } 

;;;; ;;;; ;;; ;;;

但是从Test1开始,退出值始终为0. HOw来了,批处理执行时,它会运行 ConnectionTest类,它将获得异常,因为它找不到DB2Driver22222。

任何人都可以向我解释为什么我没有收到正确的错误代码或任何错误消息。

1 个答案:

答案 0 :(得分:3)

问题是您正在接收start命令的返回码,而不是启动命令执行的。虽然start可能会看到test.bat退出代码1,但start本身会退出成功(0)。直接执行.bat:

String cmd = "test.bat";