JCommander

Java 的命令行解析框架。(Command line parsing framework for Java)

  • Owner: cbeust/jcommander
  • Platform: BSD, Cross-platform, Linux, Mac, Solaris, Windows
  • License:: Apache License 2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

JCommander

This is an annotation based parameter parsing framework for Java 8.

Here is a quick example:

public class JCommanderTest {
    @Parameter
    public List<String> parameters = Lists.newArrayList();
 
    @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
    public Integer verbose = 1;
 
    @Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
    public String groups;
 
    @Parameter(names = "-debug", description = "Debug mode")
    public boolean debug = false;

    @DynamicParameter(names = "-D", description = "Dynamic parameters go here")
    public Map<String, String> dynamicParams = new HashMap<String, String>();

}

and how you use it:

JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit1,unit2,unit3",
                    "-debug", "-Doption=value", "a", "b", "c" };
JCommander.newBuilder()
  .addObject(jct)
  .build()
  .parse(argv);

Assert.assertEquals(2, jct.verbose.intValue());
Assert.assertEquals("unit1,unit2,unit3", jct.groups);
Assert.assertEquals(true, jct.debug);
Assert.assertEquals("value", jct.dynamicParams.get("option"));
Assert.assertEquals(Arrays.asList("a", "b", "c"), jct.parameters);

The full doc is available at https://jcommander.org.

Building JCommander

./gradlew assemble

Main metrics

Overview
Name With Ownercbeust/jcommander
Primary LanguageJava
Program languageJava (Language Count: 3)
PlatformBSD, Cross-platform, Linux, Mac, Solaris, Windows
License:Apache License 2.0
所有者活动
Created At2010-07-13 05:40:31
Pushed At2025-07-16 15:25:06
Last Commit At2025-07-16 08:25:06
Release Count60
Last Release Name2.0 (Posted on )
First Release Name1.1 (Posted on )
用户参与
Stargazers Count2k
Watchers Count60
Fork Count342
Commits Count1.1k
Has Issues Enabled
Issues Count372
Issue Open Count95
Pull Requests Count146
Pull Requests Open Count9
Pull Requests Close Count76
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private