我正在尝试使用java打开Prom(进程挖掘工具)。但它根本没有效果。
try {
new ProcessBuilder("c:\\Program Files\\Prom\\prom.exe").start() ;
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
此代码无效。
但是当我使用相同的代码在同一个文件夹中打开uninst.exe时,它可以正常工作
try {
new ProcessBuilder("c:\\Program Files\\Prom\\uninst.exe").start() ;
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
我不知道为什么会这样。有什么办法吗? java无法加载繁重的应用程序吗?
答案 0 :(得分:4)
您应该通过Process.getInputStream()
和Process.getErrorStream()
检查程序输出,因为程序可能会发出警告或错误消息,这些消息不会导致异常。这些错误或警告通常用于丢失路径,环境变量,文件和文件夹权限或缺少参数。
Process proc = new ProcessBuilder(
"c:\\Program Files\\Prom\\prom.exe").start() ;
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(proc.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
还要始终使用Process.exitValue()
检查流程的返回代码。按惯例,零表示一切正常。