当前位置: 首页 > 面试题库 >

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

劳嘉实
2023-03-14
问题内容

我有一些通过 Runtime.getRuntime.exec(String)
运行命令的代码,它可以在Windows上运行。当我将代码移至Linux时,它崩溃了,并且解决该问题的唯一方法是切换到 exec(String [])
版本。如果我这样处理,代码在Windows和Linux上是否可以相同,还是应该在Windows上使用exec(String)而在Linux上使用exec(String
[])?


问题答案:

都使用 String []

我之前给您的答案是调试Windows上运行的生产软件所花费的数小时之苦的结果。

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

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

顺便说一句。我在Java
1.4上尝试了该方法,此后便有了一个新类:Java1.5上添加了ProcessBuilder。我不确定这到底是什么,但应该有充分的理由。看一看,并阅读Runtime.exec之间的区别。可能它将是一个更好的选择。

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

:)



 类似资料:
  • 我总是问这个问题,但我找不到确切的答案: Docker平台独立吗? 我的意思是,当我在Windows中生成映像时,我能在Linux或macOS上运行该映像吗?或者当我在Ubuntu上生成映像时,我可以在Windows上运行该映像吗? 如果是,怎么做?如果不是,那么说docker映像可以在任何地方运行而不用担心任何依赖又有什么意义呢? 请帮我回答这个问题

  • 问题内容: JavaScript中是否存在类似于Java的东西? 编辑:我正在使用非浏览器JavaScript环境Node.js 问题答案: 我遇到了同样的问题,并且遇到了这个非常古老的问题。经过一段时间的投资,我终于在os文档的最后找到了。 在这种情况下非常重要,否则您将在控制台中仅看到一个空白行(这是有道理的,因为这就是它应该做的)。在正常的用例中,它是不需要的。

  • 在我的mac上使用Maven构建时,在< code>mvn install上,我得到 [警告]使用平台编码(实际上是MacRoman)来复制过滤的资源,即构建取决于平台! 是否可以为给定平台 (Linux) 构建或以其他方式独立于构建平台?

  • 问题内容: 我正在使用以下代码从给定路径获取包含所有子目录的数组。 我需要数组来检查某些文件夹是否在此路径中的正确位置。直到findBugs抱怨File.separator用作正则表达式之前,这似乎是一个很好的解决方案。似乎将Windows文件分隔符传递给从中构建正则表达式的函数是个坏主意,因为反斜杠是转义字符。 如何不使用File.separator以跨平台方式拆分路径?还是这样的代码好吗? 问

  • 问题内容: 在python中,我有变量和。我想把它们串联起来获得。但是在Windows下,我应该使用和用于POSIX 。 如何使该平台独立? 问题答案: 您要为此使用os.path.join()。 使用此方法而不是使用字符串连接等方法的优势在于,它知道各种特定于OS的问题,例如路径分隔符。例子: 在 Windows 7下 : 在 Linux下 : 所述OS模块包含目录,路径操纵并找出OS特定信息许

  • 解析路径 # ospath_split.py import os.path PATHS = [ '/one/two/three', '/one/two/three/', '/', '.', '', ] for path in PATHS: print('{!r:>17} : {}'.format(path, os.path.split(path)