java - Java进程成功执行“pdflatex”但生成空的.pdf文件
问题描述
我想从 Java 程序编译一个 .tex 文件。我编写了以下代码,它成功执行,但是当我尝试打开.pdf
生成的文件时,操作系统会弹出一条消息,指出文件完全为空(链接到图像)。
顺便说一句,当我pdflatex tarea0.tex
直接从终端运行命令时,它会生成我想从 Java 程序中获取的非空 .pdf 文件。
import java.io.File;
import java.io.IOException;
class HelloWorld {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("pdflatex", "tarea0.tex");
pb.directory(new File("/Users/carlosreategui/coding/java_testing/latex"));
Process p = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方案
您需要等待该过程结束。我猜测在等待进程结束之前退出 JVM 会导致pdflatex
接收到导致它突然终止的信号。
所以添加一行:
p.waitFor();
之后p.start()
应该会有预期的效果。
推荐阅读
- c# - 如何获得 ac# 单元测试以使用 App.Config?
- mysql - SQL“NOT IN”功能无法正常工作
- django - 具有可变标签集的文档分类
- python - 为什么我无法使用有效凭据登录 Django 用户,但可以登录我原来的超级用户?
- winapi - 关闭窗口时消息循环未退出
- google-cloud-storage - 从元数据服务器获取访问令牌时出错:http://metadata/computeMetadata/v1/instance/service-accounts/default/token
- java - 如何将库导入 Android Studio
- arcore - Sceneform 1.17.1 是开源的吗?
- python - Heroku:连接到套接字的ErrorTimeout
- node.js - 如何修复 Mongoose 5.11.8 model.find() 错误操作 `thanks-leaderboards.find()` 缓冲在 10000 毫秒后超时