Czy istnieją dobre biblioteki Java, które ułatwiają budowanie aplikacji wiersza poleceń? [zamknięte]

Muszę napisać prostą aplikację wiersza poleceń w Javie. Byłoby miło użyć biblioteki, która zajmuje się analizowaniem poleceń i zajmuje się takimi rzeczami jak flagi i opcjonalne/obowiązkowe parametry...

UPDATE

Coś, co ma wbudowane wypełnianie kart byłoby szczególnie świetne.

Author: Remko Popma, 2009-01-12

10 answers

Użyłem biblioteki Apache Commons CLI do parsowania argumentów wiersza poleceń. Jest dość łatwy w użyciu i ma dość dobrą dokumentację .

Którą bibliotekę wybierzesz prawdopodobnie sprowadza się do tego, jaki styl opcji preferujesz ("--gnu-style" lub "-javac-style").

Update: picocli tab completion niedawno stało się dostępne i może być interesujące. Brak wiedzy o żadnej innej bibliotece parsowania wiersza poleceń, która zapewnia dopełnienie wiersza poleceń wymagane w OP.

 26
Author: Kevin ORourke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 11:24:10

JLine wygląda na pomocną.

JLine jest biblioteką Javy do obsługi wejścia konsoli. Jest on podobny funkcjonalnie do BSD editline i GNU readline. Osoby zaznajomione z możliwościami readline/editline dla nowoczesnych powłok (takich jak bash i tcsh) znajdą większość funkcji edycji poleceń JLine za znajomą.

I wypełnia listę tabulatorów w swoich funkcjach

 20
Author: Michael Myers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-23 04:44:30

Ponieważ szukasz biblioteki, która ułatwi tworzenie interaktywnej aplikacji shell, proponuję Cliche .

 8
Author: Stefan Asseg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-07 00:52:20

Spójrz na arg4j .

 6
Author: Pedro Henriques,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 15:29:22

W naszej firmie używamy JewelCli, który używa przypisanej definicji interfejsu Java do opisu interfejsu wiersza poleceń w stylu deklaratywnym.

Lekki i prosty w obsłudze, polecam.

 4
Author: Julien Hoarau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 16:57:19

Używałem Java Simple Argument Parser szeroko. Obsługuje wszystkie typy opcji, ma dobrze zaprojektowaną bibliotekę (w tym opcję pisania niestandardowych parserów) i zapewnia dobrą dokumentację zarówno w JavaDocs, jak i online.

Myślę, że twoim pragnieniem wypełnienia tabulatora byłaby powłoka, a nie biblioteka parsowania wiersza poleceń.

 3
Author: Brett Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-13 05:05:50

Istnieje port Java biblioteki GNU getopt do parsowania wiersza poleceń. Do edycji poleceń i uzupełniania tabulatorów jest JLine (jak już zalecał mmyers).

 1
Author: eneset,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-13 04:46:58

Warto też przyjrzeć się --jopt-simple .

Próbuje uszanować składnię opcji linii poleceń POSIX getopt () i GNU getopt_long ().' Wydaje się, że ma pewną społeczność, w szczególności jest lib parsowania linii poleceń wyboru dla OpenJDK.

Również, jak Brett wspomniał, wypełnianie kart jest zazwyczaj dostarczane przez powłokę-piszesz funkcje powłoki, aby zapewnić tę pożądaną funkcjonalność.

P. S. przepraszam za duplikat odpowiedź, ale to pytanie jest prawie identyczne z biblioteką Javy do parsowania parametrów wiersza poleceń?

 1
Author: Ivar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:29:49

Użyłem JSAP . Okazało się, że jest stabilny i dobrze udokumentowany.

Nie jestem pewien, czy rozumiem, co masz na myśli przez "wbudowane uzupełnianie kart". Możesz to rozwinąć?

 0
Author: Parag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-13 05:10:06

Wypróbowałem kilka bibliotek i skończyło się na argparse4j . Jest to naprawdę ładny port Java Pythona argparse .

 0
Author: CrouZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-02 16:14:51