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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (123)

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

提问于
用户回答回答于

来自[api] [1]

此方法检查cmdarray是否为有效的操作系统命令。哪些命令有效取决于系统,但至少该命令必须是非空字符串的非空列表。

用户回答回答于

用于将exec(String)参数拆分为String []的默认Tokeniser只是按空格字符拆分它们。不会像手动输入的shell命令那样解释引号,因此您应该调用String []版本。但是,如果您在两个平台上使用Sun JDK,则行为应该类似。但是,由于Windows提供与其他操作系统不同的shell命令(例如复制而不是cp),因此你的命令可能无法在所有平台上运行。

扫码关注云+社区

领取腾讯云代金券