Linux上的Java Runtime.exec()参数
好的,这就是问题所在:我有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。
回答:
Runtime.exec
与system()
其他语言中的类似函数不同,它不会调用外壳程序来解析命令(并且双引号字符串是外壳程序功能)。
要以所需方式拆分字符串,请使用接受String数组的Runtime.exec:
Runtime.getRuntime().exec(new String[] { "java", "MyClass1", "-exec", "java MyClass2 arg1 arg2"});
以上是 Linux上的Java Runtime.exec()参数 的全部内容, 来源链接: utcz.com/qa/404049.html