使用Java

时间:2019-07-15 16:01:19

标签: java miktex cm

我正在使用Java应用程序创建.pdf文件。它写入.tex文件,以便Miktex可以创建pdf。

writePDF(s);
    String command = "cmd /c start xelatex -synctex=1 -interaction=nonstopmode " + s + ".tex && del " + s + ".tex";  
    Runtime r = Runtime.getRuntime();
    p = r.exec(command);
    p.waitFor();

但是唯一发生的是使用以下内容创建的textput.log:

entering extended mode
**aa.tex

! Emergency stop.
<*> aa.tex

*** (job aborted, file error in nonstop mode)

奇怪的是,当我直接在Windows cmd上运行该命令时,它工作正常。如果我也像这样制作“ command”变量,并使用Java应用程序运行它,它也可以正常工作。

String command = "cmd /c start xelatex -synctex=1 -interaction=nonstopmode " + s + ".tex" 

我正在使用Java 8和Miktex 2.9.7 希望您能提供帮助

2 个答案:

答案 0 :(得分:0)

因此,为了按顺序(而不是并行)在Java中执行多个命令,可以尝试这样运行:

    String[] commands = new String[] {"xelatex -synctex=1 -interaction=nonstopmode " + s + ".tex"
                                   , "del " + s + ".tex"};  
    Runtime r = Runtime.getRuntime();
    Process p;
    for (String command: commands) {
      p = r.exec(command);
      p.waitFor();
    }

答案 1 :(得分:0)

除了如何调用多个命令外,正如@Brother已经说过的那样,您必须在这里查看:https://www.javaworld.com/article/2071275/when-runtime-exec---won-t.html

本文介绍了如何正确使用Runtime.exec(),即,您必须完全消耗所有过程输出流(标准和错误)。