我有以下代码将DataIntegrationV8.jar的输出打印到JTextArea。是否可以在同一个JTextArea中打印该程序抛出的异常?
protected Integer doInBackground() throws Exception {
Process process;
InputStream iStream;
try {
//run the DataIntegration.jar
process = Runtime.getRuntime().exec("java -jar DataIntegrationV8.jar sample.xml");
istream = process.getInputStream();
} catch (IOException e) {
throw new IOException("Error executing DataIntegrationV8.jar");
}
//get the output of the DataIntegration.jar and put it to the
//DataIntegrationStarter.jar form
InputStreamReader isReader = new InputStreamReader(iStream);
BufferedReader bReader = new BufferedReader(isReader);
String line;
while ((line = bReader.readLine()) != null) {
jtaAbout.append(line + "\n");
}
Thread.sleep(1);
return 42;
}
答案 0 :(得分:2)
默认情况下,异常堆栈跟踪显示为System.err
。您可以将ErrorStream
的输出包含到JTextArea
。
BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errorLine = null;
while ((errorLine = error.readLine()) != null) {
jtaAbout.append(errorLine + "\n");
}
答案 1 :(得分:0)
你可以检查程序返回的错误代码,它不是零,你知道输出是一个java堆栈跟踪,因为程序终止......很糟糕。