我正在尝试使用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);
我如何编写这样的命令才能让它工作? 谢谢 乔迪
答案 0 :(得分:1)
我找到了解决方案:
而不是使用
public Process exec(String command,
String[] envp,
File dir)
整个调用包含在字符串'command'中, 我现在用
public Process exec(String[] cmdarray,
String[] envp,
File dir)
其中调用被拆分为包含命令(即“pdflatex”)的数组'cmdarray'及其作为元素的参数。这样,pdflatex将空间感染的文件名理解为单个单词,并且可以完成其工作。