gpt4 book ai didi

java - 从 Java 执行批处理文件不能访问完整的 PATH

转载 作者:可可西里 更新时间:2023-11-01 09:34:21 25 4
gpt4 key购买 nike

我正在编写一个 Java 实用程序,它使用 DITA 工具包和 Apache FOP 执行批处理文件以生成 PDF。它通过使用 pdftk 为首页添加水印来完成。如果我在 Windows 中使用“开始”>“CMD”执行批处理文件,则批处理文件中的这一行有效:

pdftk "%DITA_OUTPUT%book.pdf" multibackground C:\doc_build_system\watermark.pdf output "%DITA_OUTPUT%external.pdf" compress verbose

当我通过 Runtime.exec() 执行批处理文件时,同一行失败。

失败的原因是通过Java执行时PATH变量不完整。它应该有一个条目,如:

C:\Program Files (x86)\PDFtk Server\bin\

...但事实并非如此。我试图通过调用 runtime.exec("cmd/c batchfile.bat")(而不是直接调用批处理文件)来通过 CMD 强制执行,但这也没有效果。

有什么想法吗?

最佳答案

您可以尝试在 cmd 中启动 java 之前手动设置路径:

启动cmd.exe。然后输入:

SET PATH=%PATH%;C:\Program Files (x86)\PDFtk Server\bin
java MyProgram

如果这有效,您必须检查是否编辑了正确的 PATH 变量。在 Windows 中,您可以为每个用户设置不同的 PATH 环境变量,此外还有一个系统范围的 PATH 变量(参见屏幕截图)将始终应用并与用户变量组合。 enter image description here

例如如果您确实为您的用户设置了路径,然后使用管理员提升权限来执行 java,则 PATH 将无法正确设置。

确保使用系统变量。

还要确保在编辑变量后重新启动 Windows,因为打开的应用程序和控制台通常只会在启动时获取一次环境变量。

关于java - 从 Java 执行批处理文件不能访问完整的 PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18595326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com