我有一些通过 Runtime.getRuntime.exec(String) 运行命令的代码,它在 Windows 上运行。当我将代码移至 Linux 时,它崩溃了,修复它的唯一方法是切换到 exec(String[]) 版本。如果我保持这种方式,代码在 Windows 和 Linux 上的工作方式是否相同,或者我应该在 Windows 上使用 exec(String) 而在 Linux 上使用 exec(String[])?
最佳答案
两者都使用String[]。
答案我gave you before是调试在 Windows 上运行的生产软件的几个悲惨小时的结果。
经过大量努力,我们(我)找到了之前发布的解决方案(使用String[])
由于您遇到的问题是在 Linux 上,我想最好在两者上都使用数组。
顺便说一句。我用 Java 1.4 尝试了该方法,从那时起一个新类可用:ProcessBuilder添加于 Java1.5。我不确定这是怎么回事,但应该有充分的理由。看看它并了解 Runtime.exec 之间的区别。可能这将是一个更好的选择。
最后,有些命令在任何一个平台上都不起作用,因为它们是内置于 shell(Windows cmd 或 bash/sh/等)中的,例如 dir 或 echo 以及其中一些。所以我建议在每个目标平台上进行额外/额外的测试,并为不受支持的命令添加异常处理程序。
:)
关于java - java Runtime.exec(String[]) 平台独立吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081084/