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

Dev*_*aia 5 java macos terminal command pdflatex

我试过寻找答案,但没有一个对我有用.

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

在终端,如果我输入:

open -a FireFox http://www.yahoo.co.uk
Run Code Online (Sandbox Code Playgroud)

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

要么

pdflatex x.tex
Run Code Online (Sandbox Code Playgroud)

它处理文件

在我的Java代码中输入:

open -a FireFox http://www.yahoo.co.uk'
Run Code Online (Sandbox Code Playgroud)

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

要么

pdflatex x.tex
Run Code Online (Sandbox Code Playgroud)

我收到一个错误.

这是代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

异常发生 - 这就是我所知道的:
java.io.IOException:无法运行程序"pdflatex":error = 2,
java.lang上的java.lang.ProcessBuilder.start(ProcessBuilder.java:460)中没有这样的文件或目录
. 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.(UNIXProcess.java:53)的
java.lang.UNIXProcess.forkAndExec(Native Method)中没有这样的文件或目录 . java.lang.ProcessBuilder.start(ProcessBuilder.java:453)中的lang.ProcessImpl.start(ProcessImpl.java:91 )... 4更多



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

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

java.lang.ProcessImpl.start(ProcessImpl.java:91)的java.lang.UNIXProcess.(UNIXProcess.java:53)中的forkAndExec(Native Method
). ..还有4个

Dev*_*aia 5

感谢@alf:

打印which pdflatex并使用生成的完整路径效果非常好。