gpt4 book ai didi

java - process.exec 未返回正确的代码

转载 作者:行者123 更新时间:2023-12-02 00:50:22 24 4
gpt4 key购买 nike

我有一个带有代码的 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。怎么,当批处理执行时,它会运行ConnectionTest 类,它将出现异常,因为它找不到 DB2Driver22222。

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

最佳答案

问题是您收到的是 start 命令的返回代码,不是 start 命令执行的内容。尽管 start 可能会看到 test.bat 退出并显示代码 1,但 start 本身会成功退出 (0)。直接执行.bat:

String cmd = "test.bat";

关于java - process.exec 未返回正确的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com