1

我有一个 Java 应用程序,我想生成一个新进程(启动一个 .bat 文件),它基本上会做与双击它相同的事情。

为了产生这个过程,Runtime.getRuntime().exec()我已经尝试了这两种方法。ProcessBuilder这两种方法都有效(它们可以启动 .bat 文件),但我的问题是它们实际上并没有做与双击它完全相同的事情。

更具体地说,这个 .bat 文件启动了一个配置为使用 Windows SxS(并排)运行的 JVM (java.exe MyMainClass)。因此,我创建了适当的java.exe.configjava.exe.manifest文件。当我点击它时,java 应用程序启动并且适当的 .dll 被成功加载(因为我需要 SxS)。

ProcessBuilder我的问题是,当我使用or启动完全相同的 .bat 文件(具有完全相同的参数和进程环境)时Runtime.getRuntime().exec(),它似乎没有考虑到我的 SxS 配置,因此我需要的 .dll 是根本没有加载,导致错误。

有没有人知道如何启动这个 .bat 文件,就像我双击它时 Windows laucnhes 一样?此外,是否有人对 Java SxS 部署有任何经验?我无法真正理解为什么 ProcessBuilder 会忽略我的 SxS 配置。

提前致谢。

4

1 回答 1

0

您可以尝试启动一个 cmd 窗口,该窗口会加载您的应用程序 bat 文件:

Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\path\\to\\the\\app.bat arg1 arg2\"");
于 2013-09-16T18:22:56.767 回答