[英]Spawn process in Java, similar as double-click
我有一个Java应用程序,我想产生一个新进程(启动.bat文件),该进程本质上会与双击它执行相同的操作。
我尝试了Runtime.getRuntime().exec()
和ProcessBuilder
来生成该进程。 they do not actually do the exact same thing as by double clicking on it. 这两种方法都可以工作(它们都可以启动.bat文件), 它们实际上并没有执行与双击它完全相同的操作。
更具体地说,此.bat文件将启动JVM(java.exe MyMainClass),该JVM配置为使用Windows SxS(并排)运行。 因此,我创建了适当的java.exe.config和java.exe.manifest文件。 当我在doulbe上单击时,将启动Java应用程序,并成功加载相应的.dll(原因是我需要SxS)。
我的问题是,当我使用ProcessBuilder
或Runtime.getRuntime().exec()
启动完全相同的.bat文件(具有完全相同的参数和进程环境)时,似乎没有考虑到我的SxS配置,因此我所需的.dll根本没有加载,从而导致错误。
有没有人知道我双击该启动文件的方式,就像Windows启动该启动文件一样? 此外,是否有人对Java SxS部署有任何经验? 我真的不明白为什么ProcessBuilder会忽略我的SxS配置。
提前致谢。
您可以尝试启动一个cmd窗口,该窗口会加载您的应用程序bat文件:
Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\path\\to\\the\\app.bat arg1 arg2\"");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.