簡體   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