Java Runtime.exec(COMMAND) 在 win2K8 R2 中不起作用

标签 java process runtime file-not-found

我正在使用以下两行创建一个流程

Runtime rt = Runtime.getRuntime();
Process p = rt.exec(COMMAND);

其中 COMMAND = "program.exe"program.exe 在系统的 PATH 变量上。

现在的问题是这仅在 Windows 2K8 R2 中不起作用。它适用于所有其他风格的 Windows(winXP、win2003)

报告的错误是:

java.io.IOException: Cannot run program "program.exe": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)

最佳答案

您可以从命令行手动运行该程序。您可以使用完整路径规范从父进程中运行该程序。我会说我们可以假设程序正常运行。

还有什么不同?父进程运行的环境可能是?我会在启动该过程之前检查 PATH。您正在使用 Java。太多 Java 程序 使用批处理文件来启动 JVM 进程。此批处理文件可能与 PATH 变量混淆。

如果这是您的程序并且不涉及批处理文件,我会在您运行父程序时检查当前工作目录。它也可能影响在运行时找到的内容。

关于Java Runtime.exec(COMMAND) 在 win2K8 R2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987707/

相关文章:

java - 如何比较两行或获取值与比较的行不匹配的字段?

C fork 和进程,为什么有必要这样做?

java - 从 Java 执行带反引号的 Unix 命令

linux - 为什么我不能在 Linux 中创建 50k 进程?

c# - 新的 .NET 运行时能否抛出更有意义的空引用异常?

java - 在 Weblogic 10.3 中使用 Servlet 3.0

Java 11 : Implementation of JAXB-API has not been found on module path or classpath

java - JSON 解析,字符串到对象,("Can' t 将 JSON 对象转换为 JSON 数组”)

java - 在运行时,如何限制java线程的数量

java - 如何在不更改代码的情况下动态拦截 jar 中的方法?