Java中的Spawn过程,类似于双击
Posted
技术标签:
【中文标题】Java中的Spawn过程,类似于双击【英文标题】:Spawn process in Java, similar as double-click 【发布时间】:2013-09-16 15:28:04 【问题描述】:我有一个 Java 应用程序,我想生成一个新进程(启动一个 .bat 文件),它的作用基本上与双击它相同。
我已经尝试了Runtime.getRuntime().exec()
和ProcessBuilder
以生成该进程。这两种方法都有效(它们可以启动 .bat 文件),但我的问题是它们实际上并没有做与双击它完全相同的事情。
更具体地说,这个 .bat 文件启动了一个 JVM (java.exe MyMainClass),它被配置为使用 Windows SxS(并排)运行。因此,我创建了适当的 java.exe.config 和 java.exe.manifest 文件。当我双击它时,java 应用程序启动并成功加载了相应的 .dll(因为我需要 SxS)。
我的问题是,当我使用ProcessBuilder
或Runtime.getRuntime().exec()
启动完全相同的.bat 文件(具有完全相同的参数和进程环境)时,它似乎没有考虑到我的SxS 配置,因此我需要的 .dll 根本没有加载,导致错误。
有没有人知道如何启动这个 .bat 文件,就像我双击它时 Windows 启动它一样? 此外,是否有人对 Java SxS 部署有任何经验?我真的不明白为什么 ProcessBuilder 会忽略我的 SxS 配置。
提前致谢。
【问题讨论】:
【参考方案1】:您可以尝试启动一个 cmd 窗口,该窗口会加载您的应用程序 bat 文件:
Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\path\\to\\the\\app.bat arg1 arg2\"");
【讨论】:
以上是关于Java中的Spawn过程,类似于双击的主要内容,如果未能解决你的问题,请参考以下文章