0

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

4

1 回答 1

4

Process.getInputStream()您应该通过and 检查程序输出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(). 按照惯例,零表示一切正常。

于 2013-09-03T17:08:40.883 回答