我试图使用Runtime.exec()将带有空格的文件名传递给Java应用程序内部的pdflatex。

该命令在终端上执行良好

pdflatex --halt-on-error "/home/jody/test 1.tex"


即生成了pdf,返回码为0。

像这样传递给exec()时,同一命令将不起作用(即返回代码1而不是0;未创建pdf)

myRuntime.exec("pdflatex --halt-on-error \"/home/jody/test 1.tex\"", null, null);


我如何编写这样的命令才能使其正常工作?
谢谢
   乔迪

最佳答案

我找到了解决方案:

而不是使用

public Process exec(String command,
                    String[] envp,
                    File dir)


整个调用都包含在字符串“ command”中,
我现在用

public Process exec(String[] cmdarray,
                    String[] envp,
                    File dir)


该调用被拆分为一个数组“ cmdarray”,其中包含命令(即“ pdflatex”)及其参数作为元素。通过这种方式,pdflatex可以将占用空格的文件名理解为单个单词,并可以完成其工作。

关于java - pdflatex和文件名在Java中带有空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30326744/

10-08 23:55