繁体   English   中英

Linux上的Java Runtime.exec()参数

[英]Java Runtime.exec() arguments on Linux

好的,这就是问题所在:我有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。

与其他语言中类似system()的函数不同, Runtime.exec不会调用Shell来解析命令(并且双引号字符串是Shell的功能)。

要以所需的方式拆分字符串,请使用接受String数组的Runtime.exec:

Runtime.getRuntime().exec(new String[] { "java", "MyClass1", "-exec", "java MyClass2 arg1 arg2"});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM