Я написал приложение Java, которое экспортирует некоторые данные. Вы можете выбирать между excel или xml ouput. После того, как все сделано, я хочу, чтобы созданный файл автоматически открывался.Runtime exec с xml/jdom
Для материала Excel я использую JExcelAPI и для создания XML я использую JDOM.
У меня есть метод OpenFile(), который вызывается последним, прежде чем приложение завершает работу:
private void openFile(File file) {
try {
String[] cmds = { "cmd", "/c", file.getAbsolutePath() };
for (String s : cmds) {
System.out.println(s);
}
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmds);
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
}
}
Когда я использую вариант Excel файл открывается нормально со следующим выходом из OpenFile():
cmd
/c
D:\test.xls
Process exitValue: 0
С выходом XML я не буду работать, хотя я могу открыть файл вручную просто отлично.
cmd
/c
D:\test.xml
Process exitValue: 1
Так что я думаю, что проблема где-то с JDOM, потому что оба раза применение такое же, для одного метода, когда я делаю первенствовать или XML-запись, за исключением. Но до сих пор я не добился успеха. Может ли кто-нибудь помочь мне в этом?
он открывается вместе с блокнотом ++. Я тестировал код exec для него один, и там он работает нормально. – dawastl
Обновленный ответ с лучшим процессом получения информации о выходе процесса – rolfl
Спасибо за помощь. Я сам нашел проблему. Я не закрыл FileWriter, который использовался для создания XML-документа. – dawastl