2011-12-05 32 views
5

Tôi đã thử tìm kiếm câu trả lời nhưng không có câu trả lời nào đang hoạt động cho tôi.Cách chạy lệnh 'pdflatex' trong Java trên Mac

Tôi đang cố chạy pdflatex trong thiết bị đầu cuối từ ứng dụng java trên máy Mac của mình.

Trong hẻm nếu tôi gõ:

open -a FireFox http://www.yahoo.co.uk 

nó mở yahoo.co.uk trong trình duyệt FireFox của tôi

hoặc

pdflatex x.tex 

nó xử lý các tập tin

Trong tôi Mã Java tôi nhập:

open -a FireFox http://www.yahoo.co.uk' 

nó mở yahoo.co.uk trong trình duyệt FireFox của tôi

hoặc

pdflatex x.tex 

tôi nhận được một lỗi.

Đây là Code:

public static void main(String args[]) { 

    String s = null; 

    try { 

     Process p = Runtime.getRuntime().exec("pdflatex x.tex"); 

     BufferedReader stdInput = new BufferedReader(new 
     InputStreamReader(p.getInputStream())); 

     BufferedReader stdError = new BufferedReader(new 
     InputStreamReader(p.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); 
     } 

     System.exit(0); 
    } catch (Exception e) { 
     System.out.println("exception happened - here's what I know: "); 
     e.printStackTrace(); 
     System.exit(-1); 
    } 
} 

Dưới đây là các lỗi:

exception happened - here's what I know:
java.io.IOException: Cannot run program "pdflatex": error=2, No such file or directory at
java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at
java.lang.Runtime.exec(Runtime.java:593) at
java.lang.Runtime.exec(Runtime.java:431) at
java.lang.Runtime.exec(Runtime.java:328) at
test.JavaRunCommand.main(JavaRunCommand.java:28)
Caused by: java.io.IOException: error=2, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) at
java.lang.UNIXProcess.(UNIXProcess.java:53) at
java.lang.ProcessImpl.start(ProcessImpl.java:91) at
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 more

Tôi đã thử JProc vì nó là một giải pháp từ bài khác, nhưng nó vẫn có một lỗi tương tự:

Exception in thread "main" org.buildobjects.process.StartupException:
Could not startup process 'pdflatex x.tex '.
at org.buildobjects.process.Proc.(Proc.java:46) at
org.buildobjects.process.ProcBuilder.run(ProcBuilder.java:111) at
test.JavaRunCommand.main(JavaRunCommand.java:20)
Caused by: java.io.IOException:
Cannot run program "pdflatex x.tex": error=2, No such file or directory at
java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at
java.lang.Runtime.exec(Runtime.java:593) at
org.buildobjects.process.Proc.(Proc.java:43) ... 2 more
Caused by: java.io.IOException: error=2, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) at
java.lang.UNIXProcess.(UNIXProcess.java:53) at
java.lang.ProcessImpl.start(ProcessImpl.java:91) at
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 more

+2

Thử in 'pdflatex' nào trong dòng lệnh, sau đó thay thế' pdflatex' trong mã Java bằng tên đầy đủ của nó. – alf

+0

Cảm ơn @alf! Nó đã làm việc! nhưng bây giờ tôi muốn mở tập tin pdf được tạo ra. Làm cách nào để gọi pdflatex VÀ mở tệp pdf kết quả trong một lần? –

+0

Tôi đã thực hiện nó - Tôi đã viết một tập tin thực thi và thực hiện điều đó. Cảm ơn bạn đã giúp đỡ! :) –

Trả lời

2

nhờ @alf:

in which pdflatex và sử dụng đường dẫn đầy đủ kết quả hoạt động hoàn hảo.

Các vấn đề liên quan