java Runtime.exec(String[]) 平台独立吗?

Geo*_*Geo 4 java process command-execution

我有一些通过Runtime.getRuntime.exec(String)运行命令的代码,它可以在 Windows 上运行。当我将代码移至 Linux 时,它崩溃了,修复它的唯一方法是切换到exec(String[])版本。如果我这样保留,代码在 Windows 和 Linux 上的工作方式是否相同,或者我应该在 Windows 上使用 exec(String) 而在 Linux 上使用 exec(String[]) ?

Osc*_*Ryz 5

两者都使用String[] 。

我之前给你的答案是调试运行在 Windows 上的生产软件几个小时的痛苦结果。

经过大量努力,我们(我)找到了之前发布的解决方案(使用String[]

由于您遇到的问题是在 Linux 上,我想在两者上使用阵列将是最好的。

顺便提一句。我用Java 1.4尝试了这个方法,从那时起一个新的类可用: Java1.5上添加的ProcessBuilder。我不确定这到底是怎么回事,但应该有一个充分的理由。看一下它并了解 Runtime.exec 之间的区别。也许这将是一个更好的选择。

最后,有些命令在这两个平台上都不起作用,因为它们是使用 shell(Windows cmd 或 bash/sh/ 等)内置的,例如direcho以及其中的一些命令。因此,我建议在每个目标平台上进行额外/额外的测试,并为不支持的命令添加异常处理程序。

:)