我试过寻找答案,但没有一个能为我工作。
我正在尝试在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”:error = 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,没有这样的文件或目录 java中的java.lang.UNIXProcess.forkAndExec(Native方法) java.lang.UNIXProcess。(UNIXProcess.java:53)在 java.lang.ProcessImpl.start(ProcessImpl.java:91) java.lang.ProcessBuilder.start(ProcessBuilder.java:453)... 4更多
我尝试过JProc,因为它是另一篇文章的解决方案,但它仍然有类似的错误:
线程“main”中的异常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”:error = 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,没有这样的文件或目录 java中的java.lang.UNIXProcess.forkAndExec(Native方法) java.lang.UNIXProcess。(UNIXProcess.java:53)在 java.lang.ProcessImpl.start(ProcessImpl.java:91) java.lang.ProcessBuilder.start(ProcessBuilder.java:453)... 4更多
答案 0 :(得分:2)
感谢@alf:
打印which pdflatex
并使用生成的完整路径完美运行。