代码拉取完成,页面将自动刷新
<dependency>
<groupId>args4j</groupId>
<artifactId>args4j</artifactId>
<version>2.33</version>
</dependency>
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.Option;
import org.kohsuke.args4j.spi.BooleanOptionHandler;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* (non-javadoc)
*
* @author <font size = "20" color = "#3CAA3C"><a href="https://gitee.com/JustryDeng">JustryDeng</a></font> <img src="https://gitee.com/JustryDeng/shared-files/raw/master/JustryDeng/avatar.jpg" />
* @since 2021/10/14 0:41:06
*/
@SuppressWarnings("all")
public class ArgsInfo {
/**
* 此字段主要用于容纳可能被多解析出来的无效的指令
*/
@Argument
private List<String> arguments = new ArrayList<>();
/** *************************** 通过{@link Option}注解,将启动指令中的参数与此模型的字段关联起来 *************************** */
@Option(name = "-name", required = true, usage = "我是-name的说明")
private String name;
@Option(name = "-age", usage = "我是-age的说明")
private int age = -1;
@Option(name = "-student", usage = "我是-student的说明", handler = BooleanOptionHandler.class)
private boolean student = false;
@Option(name = "-hobby", aliases = {"-love", "-like"}, usage = "我是-hobby的说明")
private String hobby = "defaultHobby";
@Option(name = "-gender", usage = "我是-gender的说明")
private GenderEnum gender = GenderEnum.WOMAN;
@Option(name = "-avatar", usage = "我是-avatar的说明")
private File avatar = new File("D:/defaultDir/");
public enum GenderEnum {
MAN, WOMAN
}
@Override
public String toString() {
return "ArgsInfo{" +
"arguments=" + arguments +
", name='" + name + '\'' +
", age=" + age +
", student=" + student +
", hobby='" + hobby + '\'' +
", gender=" + gender +
", avatar=" + avatar +
'}';
}
}
import com.example.args4jdemo.model.ArgsInfo;
import com.ideaaedi.commonds.exception.ExceptionUtil;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SuppressWarnings("all")
@SpringBootApplication
public class Args4jDemoApplication {
public static void main(String[] args) {
// 创建一个对象,这个对象中被@Option注解标注了的字段即为想要解析到的字段
ArgsInfo argsInfo = new ArgsInfo();
// 创建解析器
CmdLineParser cmdLineParser = new CmdLineParser(argsInfo);
try {
// 进行解析
cmdLineParser.parseArgument(args);
// 打印解析结果
System.out.println(argsInfo);
} catch (CmdLineException e) {
///e.printStackTrace();
System.out.println(ExceptionUtil.getStackTraceMessage(e));
// 打印使用说明
new CmdLineParser(new ArgsInfo()).printUsage(System.out);
}
}
}
正常测试
执行java -jar args4j-demo-0.0.1-SNAPSHOT.jar -name 邓沙利文 -age 18 -love eating -student false -gender MAN -avatar D:/avatar.jpg
,可看到控制台输出:
ArgsInfo{arguments=[false], name='邓沙利文', age=18, student=true, hobby='eating', gender=MAN, avatar=D:\avatar.jpg}
异常测试
执行java -jar args4j-demo-0.0.1-SNAPSHOT.jar
,可看到控制台输出:
org.kohsuke.args4j.CmdLineException: Option "-name" is required
at org.kohsuke.args4j.CmdLineParser.checkRequiredOptionsAndArguments(CmdLineParser.java:588)
at org.kohsuke.args4j.CmdLineParser.parseArgument(CmdLineParser.java:534)
at com.example.args4jdemo.Args4jDemoApplication.main(Args4jDemoApplication.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
-age N : 我是-age的说明 (default: -1)
-avatar FILE : 我是-avatar的说明 (default: D:\defaultDir)
-gender [MAN | WOMAN] : 我是-gender的说明 (default: WOMAN)
-hobby (-love, -like) VAL : 我是-hobby的说明 (default: defaultHobby)
-name VAL : 我是-name的说明
-student : 我是-student的说明 (default: false)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。