【发布时间】: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