是什么改变了runtime.exec的行为?

时间:2018-03-23 17:19:56

标签: java runtime.exec

我们已经使用了一段代码了很长一段时间,它停止了工作。代码有效: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule> 我们正在从Websphere 8.5升级到Websphere 9.0,并选择了一个新的JDK。我找到了一些答案(例如Why does Runtime.exec(String) work for some but not all commands?)和文章(例如https://blogs.oracle.com/thejavatutorials/jdk-7u25:-solutions-to-issues-caused-by-changes-to-runtimeexec),这些答案有助于指明使用processBuilder重写代码的方法。我想要找到的是可能导致这种变化的具体改变。是否有新的Java或IBM JDK版本将jdk.lang.Process.allowAmbigousCommands删除为默认设置,或者标签是否更正了拼写而不保留旧版本以实现向后兼容性,或者是什么?

代码用作Runtime.getRuntime.exec(new String[] { "sh", "-c", "/opt/mycommand myparam | sed -ne '/searchstring/p;/searchstring2/q' | tail -1" });,但现在无法将myparam传递给mycommand,我从mycommand收到一个错误,它需要一个参数。

我已经将代码转换成成功使用了processBuilder,但我很好奇这个问题的根本原因。

0 个答案:

没有答案