S-JIS[2022-09-07/2022-09-14] 変更履歴

JCommander

Javaでコマンドラインパラメーターを解析するライブラリーであるJCommanderのメモ。


概要

JCommanderはJavaでコマンドラインパラメーター(args)を解析するライブラリー。

$ java JCommanderExample --name hishidama

→パラメーターの解析を行い、--nameの値としてhishidamaを取り出す

JCommanderの使い方は、
解析結果の値を保持するクラス(JavaBeansのような感じ。POJO)を用意しておく。
パラメーター名等は、そのフィールドにアノテーションを付けることで指定する。


インストール

JCommanderはMavenリポジトリーから取得できる。

build.gradleの例:

plugins {
    id 'java'
    id 'eclipse'
}

java {
    sourceCompatibility = JavaVersion.VERSION_18
    targetCompatibility = JavaVersion.VERSION_18
}

compileJava {
    options.encoding = 'UTF-8'
}

compileTestJava {
    options.encoding = 'UTF-8'
}

repositories {
    mavenCentral()
}

dependencies {
    // https://mvnrepository.com/artifact/com.beust/jcommander
    implementation group: 'com.beust', name: 'jcommander', version: '1.82'
}

package com.example.jcommander;

import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
public class JCommanderExample {

    static class Argument {
        @Parameter(names = { "-n", "--name" }, description = "user name")
        String name;
    }
    public static void main(String... args) {
        var argument = new Argument();
        var commander = JCommander.newBuilder()
            .programName("appName")
            .addObject(argument)
            .build();

        // 使用方法(パラメーターの種類)表示
        commander.usage();

        // コマンドラインパラメーター解析
        commander.parse(args);

        System.out.printf("name=%s%n", argument.name);
    }
}

まず、解析したコマンドラインパラメーターを保持するクラス(この例ではArgument)を用意する。

そのクラスのインスタンスを引数としてJCommanderインスタンスを生成する。(→JCommander
usageメソッドで使用方法を(標準出力に)表示できる。
parseメソッドでコマンドラインパラメーターの解析を行う。(Argumentのフィールドに値が設定される)

実行例

$ java -cp 〜 com.example.jcommander.JCommanderExample -n hishidama
Usage: appName [options]
  Options:
    -n, --name
      user name

name=hishidama

--name=〜」で指定できるようにする方法


Javaへ戻る / 技術メモへ戻る
メールの送信先:ひしだま