Próbowałem wyszukać odpowiedź, ale żadna nie działa dla mnie.Jak uruchomić polecenie "pdflatex" w języku Java na komputerze Mac:
Próbuję uruchomić pdflatex w terminalu z mojej aplikacji java na moim Macu.
W Terminalu gdybym wpisać:
open -a FireFox http://www.yahoo.co.uk
otwiera yahoo.co.uk w przeglądarce FireFox
lub
pdflatex x.tex
przetwarza plik
W moim Kod Java, który wpisuję:
open -a FireFox http://www.yahoo.co.uk'
otwiera yahoo.co.uk w przeglądarce FireFox
lub
pdflatex x.tex
pojawia się błąd.
Oto kod:
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);
}
}
Oto błąd:
exception happened - here's what I know:
java.io.IOException: Cannot run program "pdflatex": error=2, No such file or directory at
java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at
java.lang.Runtime.exec(Runtime.java:593) at
java.lang.Runtime.exec(Runtime.java:431) at
java.lang.Runtime.exec(Runtime.java:328) at
test.JavaRunCommand.main(JavaRunCommand.java:28)
Caused by: java.io.IOException: error=2, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) at
java.lang.UNIXProcess.(UNIXProcess.java:53) at
java.lang.ProcessImpl.start(ProcessImpl.java:91) at
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 more
Próbowałem JProc jak to było rozwiązanie z innego wątku, ale nadal ma podobny błąd:
Exception in thread "main" org.buildobjects.process.StartupException:
Could not startup process 'pdflatex x.tex '.
at org.buildobjects.process.Proc.(Proc.java:46) at
org.buildobjects.process.ProcBuilder.run(ProcBuilder.java:111) at
test.JavaRunCommand.main(JavaRunCommand.java:20)
Caused by: java.io.IOException:
Cannot run program "pdflatex x.tex": error=2, No such file or directory at
java.lang.ProcessBuilder.start(ProcessBuilder.java:460) at
java.lang.Runtime.exec(Runtime.java:593) at
org.buildobjects.process.Proc.(Proc.java:43) ... 2 more
Caused by: java.io.IOException: error=2, No such file or directory at
java.lang.UNIXProcess.forkAndExec(Native Method) at
java.lang.UNIXProcess.(UNIXProcess.java:53) at
java.lang.ProcessImpl.start(ProcessImpl.java:91) at
java.lang.ProcessBuilder.start(ProcessBuilder.java:453) ... 4 more
Spróbuj wydrukować 'which pdflatex' w linii poleceń, a następnie zastąpienie' pdflatex' w kodzie Java jego pełną nazwą. – alf
Dzięki @alf! Zadziałało! ale teraz chcę otworzyć wygenerowany plik pdf. Jak wywołać pdflatex I otworzyć wynikowy plik pdf za jednym razem? –
Zrobiłem to - napisałem plik wsadowy i wykonałem to. Dzięki za pomoc! :) –