我正在編寫一個Java應用程序,它接受使用Apache Commons CLI與GnuParser處理的命令行參數。由於不理解的原因,我希望它默默地忽略未知的命令行選項,而不是拋出一個ParseException,但我沒有辦法做到這一點。我看到GnuParser.parse()上有一個stopAtNonOption布爾選項,但是我想要的更像ignoreAtNonOption,它將在遇到未知標記後繼續處理選項。Apache Commons CLI選項解析器可以忽略未知的命令行選項嗎?
我可以實現我自己的解析器來實現這一點,但我很驚訝沒有內置的這個功能,所以我想我會檢查之前走下這條路。
什麼我談論示例代碼:
try {
CommandLine commandLine = parser.parse(options, args);
// stopAtNonOption set to true (below) is also not what I want
// CommandLine commandLine = parser.parse(options, args, true);
} catch (ParseException e) {
LOG.error("error parsing arguments", e);
throw new RuntimeException(e);
}
這很美麗,謝謝!順便說一句,這應該是任何API設計師關於爲什麼你絕對肯定真的不想讓你的API類最終的說明。爲什麼?因爲你不夠聰明,無法找出客戶端代碼想要重用你的東西的所有方式。 – 2012-05-29 18:50:28
我已經爲BasicParser完成了相同的操作。像魅力一樣工作!肯定應該添加到cli API。 – Dudi 2014-07-18 08:22:58
這是現在不推薦:(。 – Decoded 2016-02-26 04:55:29