我在我的java代码中调用了一个位于jar文件中的类(使用java -classpath path/file.jar classname)。如何在执行java命令时得到错误信息?
这个工作很好,但只有当命令格式正确。如果我犯了一个错误,getRuntime().exect(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();
}
}
对如何从执行的命令中获取错误有任何建议吗?
谢谢
看起来他希望等待过程终止。 – 2011-04-21 19:00:45
我同意,但你不能在同一个线程中并行读取两个流。 – MByD 2011-04-21 19:01:29
@MByD,为什么不呢? – corsiKa 2011-04-21 19:08:58