如何在Mac上的Java中运行命令'pdflatex'

时间:2011-12-05 10:32:16

标签: java macos terminal command pdflatex

我试过寻找答案,但没有一个能为我工作。

我正在尝试在Mac上的java应用程序中运行终端中的pdflatex。

在终端,如果我输入:

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

它在我的FireFox浏览器中打开yahoo.co.uk

pdflatex x.tex

它处理文件

在我的Java代码中输入:

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

它在我的FireFox浏览器中打开yahoo.co.uk

pdflatex x.tex

我收到错误。

以下是代码:

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);
    }
}

这是错误:

  

异常发生 - 这就是我所知道的:
  java.io.IOException:无法运行程序“pdflatex”:error = 2,没有这样的文件或目录   java.lang.ProcessBuilder.start(ProcessBuilder.java:460)在   java.lang.Runtime.exec(Runtime.java:593)在   java.lang.Runtime.exec(Runtime.java:431)在   java.lang.Runtime.exec(Runtime.java:328)在   test.JavaRunCommand.main(JavaRunCommand.java:28)
  引起:java.io.IOException:error = 2,没有这样的文件或目录   java中的java.lang.UNIXProcess.forkAndExec(Native方法)   java.lang.UNIXProcess。(UNIXProcess.java:53)在   java.lang.ProcessImpl.start(ProcessImpl.java:91)   java.lang.ProcessBuilder.start(ProcessBuilder.java:453)... 4更多

我尝试过JProc,因为它是另一篇文章的解决方案,但它仍然有类似的错误:

  

线程“main”中的异常org.buildobjects.process.StartupException:
  无法启动进程'pdflatex x.tex'。
  在org.buildobjects.process.Proc。(Proc.java:46)上   org.buildobjects.process.ProcBuilder.run(ProcBuilder.java:111)在
  test.JavaRunCommand.main(JavaRunCommand.java:20)
  引起:java.io.IOException:
  无法运行程序“pdflatex x.tex”:error = 2,没有这样的文件或目录   java.lang.ProcessBuilder.start(ProcessBuilder.java:460)在   java.lang.Runtime.exec(Runtime.java:593)在   org.buildobjects.process.Proc。(Proc.java:43)... 2更多
  引起:java.io.IOException:error = 2,没有这样的文件或目录   java中的java.lang.UNIXProcess.forkAndExec(Native方法)   java.lang.UNIXProcess。(UNIXProcess.java:53)在   java.lang.ProcessImpl.start(ProcessImpl.java:91)   java.lang.ProcessBuilder.start(ProcessBuilder.java:453)... 4更多

1 个答案:

答案 0 :(得分:2)

感谢@alf:

打印which pdflatex并使用生成的完整路径完美运行。