2014-10-22 105 views
0

我想通過Java上的dvipdfmx命令將.dvi轉換爲.pdf。但我的代碼拋出IOException。 我使用OS X.Java使用Process#start()時,拋出IOException

以下是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 
+3

請張貼堆棧跟蹤 – 2014-10-22 05:05:39

+0

跟蹤將是有益的。如果沒有找到該文件,它不會拋出任何異常。 – 2014-10-22 05:07:45

+0

我編輯並添加了錯誤輸出。 – redstone 2014-10-22 05:18:37

回答

1

由於@chrylis在他的評論中說,你應該通過絕對路徑可執行(不僅給ARG):

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

我明白了。我會試試看。 – redstone 2014-10-22 09:32:40

+0

謝謝!它確實工作! – redstone 2014-10-22 09:35:15