I need to write a simple command-line application in Java. It would be nice to use a library that takes care of parsing commands and takes care of things like flags and optional/mandatory parameters...
UPDATE
Something that has built-in TAB completion would be particularly great.
JLine looks helpful.
And it does list tab completion in its features.
Have a look at arg4j.
I have used JSAP. I have found it to be stable and well documented.
I am not sure I understand what you mean by "built-in TAB completion". Can you elaborate.
As you're searching for a library that eases developing an interactive shell application, I'd suggest Cliche.
I have used the Java Simple Argument Parser extensively. It handles all sorts of option types, has a well-designed and library (including the option to write custom parsers), and provides good documentation both in the JavaDocs and online.
I think your desire for tab completion would be taken care of by the shell rather than the command-line parsing library.
It's also worth looking at --jopt-simple.
It 'attempts to honor the command line option syntaxes of POSIX getopt() and GNU getopt_long().' It seems to have some community traction, notably being the command line parsing lib of choice for the OpenJDK.
Also, as Brett mentioned, tab completion is typically provided by your shell - you would write shell functions to provide that desired functionality.
p.s. Sorry for the duplicate answer, but this question is almost identical to Java library for parsing command-line parameters?