Java使用Process#start()时,抛出IOException

时间:2014-10-22 05:03:01

标签: java ioexception processbuilder

我想在Java上使用dvipdfmx命令将.dvi转换为.pdf。但是我的代码抛出了IOException。 我使用的是OS X.

以下是Main.java。

 public class Main {
     public static void main(String[] args) throws IOException, InterruptedException {
         ProcessBuilder pb = new ProcessBuilder();
         pb.command("dvipdfmx", "myreport.dvi");
         Process process = pb.start();
         process.waitFor();
     }  
}

请告诉我如何解决问题。

以下是输出错误。

    Exception in thread "main" java.io.IOException: Cannot run program "dvipdfmx": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
    at Main.main(Main.java:11)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:185)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
    ... 1 more

1 个答案:

答案 0 :(得分:1)

正如@chrylis在评论中所说,你应该将绝对路径传递给可执行文件(不仅仅是arg):

pb.command("/path/to/your/dvipdfmx", "/path/to/your/myreport.dvi");