【问题标题】:How to run the command 'pdflatex' in Java on Mac如何在 Mac 上的 Java 中运行命令“pdflatex”
【发布时间】:2012-01-13 02:43:44
【问题描述】:

我已经尝试寻找答案,但没有一个对我有用。

我正在尝试从我的 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”:错误=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, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) 在
java.lang.UNIXProcess.(UNIXProcess.java:53) 在
java.lang.ProcessImpl.start(ProcessImpl.java:91) 在
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 更多

我已经尝试过 JProc,因为它是另一个帖子的解决方案,但它仍然有类似的错误:

线程“主”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”:错误=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, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) 在
java.lang.UNIXProcess.(UNIXProcess.java:53) 在
java.lang.ProcessImpl.start(ProcessImpl.java:91) 在
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 更多

【问题讨论】:

  • 尝试在命令行中打印which pdflatex,然后用其全名替换Java代码中的pdflatex
  • 谢谢@alf!有效!但现在我想打开生成的 pdf 文件。如何调用 pdflatex 并一次性打开生成的 pdf 文件?
  • 我已经完成了 - 我写了一个批处理文件并执行了它。谢谢你的帮助! :)

标签: java macos terminal command pdflatex


【解决方案1】:

感谢@alf:

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

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 2022-01-20
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2017-11-16
    • 2014-07-23
    • 2017-10-05
    相关资源
    最近更新 更多