gpt4 book ai didi

java - 执行java命令时如何获取错误消息?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:01:31 25 4
gpt4 key购买 nike

我在我的 java 代码中调用了一个位于 jar 文件中某处的类(使用 java -classpath path/file.jar classname)。

这很好用,但前提是命令格式正确。如果我犯了一个错误,getRuntime().exec(command) 什么也不会说。下面我有工作命令调用。我想在命令不起作用时收到错误 消息。如果我在 cmd (windows) 中犯了一个错误,我会得到一个正确的错误并且我可以修复它。但不在我的 Java 应用程序中。

我留下了“if(input.ready())”,因为如果我不这样做,程序会在命令行不正确时卡住。这发生在执行“input.readLine()”时。

        // Execute a command with an argument that contains a space
String[] genKOSCommand = new String[] {
"java",
"-classpath",
Config.XDSI_TEST_KIT_HOME + "/xdsitest/lib/xdsitest.jar;"
+ Config.XDSI_TEST_KIT_HOME + "/xdsitest/classes",
"ca.etsmtl.ihe.xdsitest.docsource.SimplePublisher", "-k",
"C:/Softmedical/Viewer_Test/xdsi-testkit-2.0.4/xdsihome/usr/data/image14.dcm" };

Process child = Runtime.getRuntime().exec(genKOSCommand);

BufferedReader input = new BufferedReader(new InputStreamReader(
child.getInputStream()), 13107200);

String line = null;

if (input.ready()) {
while ((line = input.readLine()) != null) {
System.out.println(line);
}

try {
child.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

关于如何从执行的命令中获取错误有什么建议吗?

谢谢

最佳答案

通过使用 getErrorStream:

BufferedReader errinput = new BufferedReader(new InputStreamReader(
child.getErrorStream()));

当处理来自不同流的输入时,最好在不同的线程中执行(因为那些调用(readLine 等)是阻塞调用。

关于java - 执行java命令时如何获取错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748460/

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