无法使用java打开exe应用程序

时间:2013-09-03 16:55:49

标签: java processbuilder

我正在尝试使用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无法加载繁重的应用程序吗?

1 个答案:

答案 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()检查流程的返回代码。按惯例,零表示一切正常。