2015-11-23 19 views
6

Tôi từng làm việc với Apache Commons Cli 1.2. Vì những lý do không liên quan đến câu hỏi này, tôi muốn trình phân tích cú pháp bỏ qua các đối số nếu chúng không xác định (không được thêm vào một đối tượng tùy chọn).Apache Commons CLI 1.3.1: Làm thế nào để bỏ qua các đối số không xác định?

Ví dụ (giả):

Options specialOptions; 
specialOptions.addOption(null, "help", false, "shows help"); 
specialOptions.addOption(null, "version", false, "show version"); 

CommandLineParser parser = new DefaultParser(); 
CommandLine cmd = parser.parse(options, args); //no third argument, since i dont want the program to stop parsing. 
// run program with args: --help --unknown --version 
// program shall parse --help AND --version, but ignore --unknown 

Tôi sử dụng này là giải pháp của Pascal Schäfer: Can Apache Commons CLI options parser ignore unknown command-line options?

này làm việc tốt cho tôi trên 1.2, và nó hoạt động tốt trên 1.3.1 là tốt. Nhưng nó không được chấp nhận. Trình phân tích cú pháp tôi đã sử dụng đã được thay thế bằng DefaultParser. Tôi đã tra cứu các chức năng, nhưng không có phương pháp như vậy processOptions.

Tôi thực sự muốn sử dụng mã số đó sẽ không bị xóa trong bản phát hành sau. Có ai có một ý tưởng làm thế nào để giải quyết vấn đề này?

+0

Câu hỏi hỏi là cho một phiên bản cũ trên plugin, và tôi đang thậm chí đề cập đến nó, vậy làm thế nào đây là một dublicate? – leimooo

+0

Và nó không làm nảy sinh câu hỏi của tôi. – leimooo

+3

Tôi bỏ phiếu để mở lại vì câu hỏi đã yêu cầu một cách rõ ràng về cách thức không được hỗ trợ để giải quyết vấn đề. –

Trả lời

0

này nên làm việc cho use-case của bạn:

Options options = new Options(); 
CommandLine commandLine = new DefaultParser().parse(options, args, false); 

Phần quan trọng đối với bạn là lập luận false mà nói để không thất bại khi lựa chọn chưa biết được đáp ứng.

+1

Xin lỗi, có lẽ tôi đã bày tỏ bản thân mình xấu: Phương pháp bạn đang nói với tôi để sử dụng doesnt giải quyết vấn đề, kể từ khi programm sẽ ngừng phân tích lập luận, mặc dù anh không ném một ngoại lệ. Đối với trường hợp sử dụng của tôi, quá trình phân tích cú pháp phải tiếp tục và đối số không xác định sẽ chỉ bị bỏ qua hoặc bỏ qua. Sẽ thêm một số chi tiết cho câu hỏi. Xin lỗi vì chuyện đó. – leimooo

+0

Tốt hơn nên chỉnh sửa câu trả lời này vì nó không phải là giải pháp cho câu hỏi, nhưng nó có thể là một giải pháp khác cho người khác. – SexyNerd

+0

Tôi đã thử các tùy chọn trên và phân tích cú pháp gửi ParseException (ngay cả khi mã nói nó không nên). Có thể có một lỗi trong DefaultParser. – JACH

Các vấn đề liên quan