【发布时间】:2013-01-26 04:45:14
【问题描述】:
好的,问题来了: 我有 3 个类 MyClass1 和 MyClass2 和 ExecClass。 我转到命令提示符并执行以下操作:
$java MyClass1 -exec "java MyClass2 arg1 arg2"
效果很好。 现在在 ExecClass 我有以下行:
Runtime.getRuntime().exec("java MyClass1 -exec \"java MyClass2 arg1 arg2\"");
问题是如果您打印第二个字符串与第一个字符串完全相同,但是当我的 ExecClass 运行它时 MyClass1 抱怨:无法识别的参数 arg1 并失败。 经过一番调试,我发现在第一种情况下,当我直接从终端调用时,引号中的整个字符串是 1 个参数 (arg[1]),而在第二种情况下,arg.length = 5 和它基本上将它们分开......出于一些我不知道的原因。 我只需要知道一个解决方法,如果有人知道,也就是我的 Runtime.exec() 可以工作。 PS:在我的 Windows 机器上,这样的问题不仅仅发生在 linux 上。这是一个ubuntu破坏内核:2.6.32-279.14.1.el6.x86_64。
【问题讨论】:
-
另请参阅stackoverflow.com/questions/1410741/…,了解确切的问题和两个可能的答案。
-
看在遗憾的份上,开始使用
ProcessBuilder! -
感谢您提供的额外信息,效果很好。是..我从来没有使用过 ProcessBuilder,因为我前一段时间有点停止使用 java 但可能会看看它。
-
您也可以使用 ProcessBuilder。 stackoverflow.com/a/7134525/2006412
标签: java linux-kernel runtime runtime.exec