【发布时间】:2011-04-21 18:49:43
【问题描述】:
我在我的 java 代码中调用一个位于 jar 文件中某处的类(使用 java -classpath path/file.jar 类名)。
这很好用,但前提是命令格式正确。如果我犯了一个错误, getRuntime().exect(command) 就什么也不说。贝娄我有工作命令调用。当命令不起作用时,我想收到 error 消息。如果我在 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();
}
}
对如何从执行的命令中获取错误有任何建议吗?
谢谢
【问题讨论】:
标签: java