1. 程式人生 > 其它 >Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument f/h/s/v......

Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument f/h/s/v......

技術標籤:Javajavaclicommand

今日在做一個基於Command CLI通過命令列控制引數的小模組,在輸入-f引數後,報出這個錯誤:

Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument f

仔細查閱後發現錯誤原因
options.addOption("f",true,"The PFX or CER certificate used for the operation.");
在addOption()的時候是按照普通模式進行的,而我的需求是要在引數 -f 後面加 2個 目標檔案,例如:-f E:\file1.txt E:\file2.txt

查閱資料後發現普通模式不能滿足這種需求,於是找到了合適的addOption()方案:
在這裡插入圖片描述
於是按照這種方案進行輸入引數和目標檔案

-f E:\file1.txt,E:\file2.txt

然後就成功執行了

比葫蘆畫瓢,按照這個模式,將其中的valueSeparator(’,’)改為valueSeparator(’ '),即逗號改為空格,應該就能這樣輸入引數和目標檔案了(IDEA好像有優化,就算不改,輸入目標檔案的時候用空格分隔也沒有問題)

-f E:\file1.txt E:\file2.txt

問題就這樣解決了…

但是緊接著就又出現了一個錯誤:

Caused by: org.apache.commons.cli.MissingArgumentException: Missing argument s

我就想,這不是跟上面的一樣嗎,但是我這個引數的需求是不需要目標檔案的,於是看了一眼addOption()

options.addOption("s",true,"To generate the signature.");
好傢伙,不需要後接引數,結果設為了hasArg:true,於是就改為false,問題就全部解決了。