java如何解析命令行参数

这篇具有很好参考价值的文章主要介绍了java如何解析命令行参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文章【笔记】JCommander解析命令行参数_MrXionGe的博客-CSDN博客

很多时候我们的程序都是通过main方法启动,同时传入参数。

比如 java -jar xxx.jar  args1 args2  ,这样没什么问题,但是很多时候这些参数只有我们自己知道

但是我们看好点的项目 例如datax flink,spark 等等 被人的熟知的项目 都是见名知意

比如 class 是类名, deploy-mode 是部署方式 -conf 是配置文件,为什么别人的这么优雅,我们的这么丑陋!!所以需要学习

spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode client \

--conf spark.dynamicAllocation.enabled=false \

--conf spark.yarn.am.memory=700m \

--conf spark.driver.memoryOverhead=1g \

--driver-memory 1g \

--executor-memory 2g \

--num-executors 2 \

--executor-cores 2 \

/data/cc_test/spark/spark-examples_2.11-2.4.0-cdh6.3.2.jar \

引入依赖

        <dependency>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
            <version>1.82</version>
        </dependency> 

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version>
        <scope>compile</scope>
    </dependency>

 demo 

package com.chenchi.parse.args;

import cn.hutool.json.JSONUtil;
import com.beust.jcommander.IStringConverter;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

@Data
public class CmdArgs2 {
    @Parameter(names = {"-s", "--string"}, description = "this is string", help = true, order = 1)
    private String s;

    @Parameter(names = {"-i", "--int"}, description = "this is int ", help = true, order = 2)
    private Integer i;

    @Parameter(names = {"-f", "--float"}, description = "this is float", help = true, order = 3)
    private float f;

    @Parameter(names = {"-d", "--decimal"}, description = "this is decimal", help = true, order = 4)
    private BigDecimal d;
    //注意加 这个
    @Parameter(names = {"-b", "--bool"}, description = "this is bool", help = true,arity = 1, order = 4)
    private boolean b;
    //password=true  这里就是类似与 mysql -uroot -p  然后输密码 和客户端交互
    @Parameter(names = {"-p", "--password"}, description = "this is password", help = true,password = true, order = 4)
    private String p;
    @Parameter(names = "--help", description = "print help message", help = true, order = 0)
    private boolean help;
    //这个通过多个参数去获取
    @Parameter(names = {"--list1","-l1"}, description = "this is list",help = true,order = 5)
    private List<String> list1;
    //这个通过转化去获取
    @Parameter(names = {"--list2","-l2"}, description = "this is list",help = true,listConverter =myListConvert.class,order = 5)
    private List<String> list2;
//-s chenchi -i 1234 -f 123.4567 -d 987.6543 -b false -l1 chenchi -l1 chenchi2 -l2 1,2,3,4  -p cc_password
    public static void main(String[] args) {
        System.out.println(Arrays.toString(args));
        CmdArgs2 cmdArgs = new CmdArgs2();
        JCommander commander = JCommander.newBuilder()
                //程序名
                .programName("CommandTest")
                //参数对象
                .addObject(cmdArgs)
                //创建
                .build();
        //解析参数
        commander.parse(args);
        if (cmdArgs.isHelp()) {
            //打印帮助信息
            commander.usage();
            return;
        }
        //打印转换之后的参数对象
        System.out.println(cmdArgs);
    }

    static class myListConvert implements IStringConverter<List<String>>{
        @Override
        public List<String> convert(String s) {
            String[] split = s.split(",");
            List<String> list = Arrays.asList(split);
            return list ;
        }
    }
}

 可以将参数直接转化为list类型,或者map或者直接转化为一个pojo。

说这么多还不如直接看官网 JCommander  写的还不错通俗易懂文章来源地址https://www.toymoban.com/news/detail-530561.html

到了这里,关于java如何解析命令行参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • es集群问题排查、常用命令、参数解析

    一、常用命令 二、案例分析 2.1集群变红 症状:集群变红 分析:通过Allocation Explain API 发现创建索引失败,因为无法找到标记了相应box type的节点 解决:删除索引,集群变绿,重新创建索引,并且指定正确的routing box type,索引创建成功集群保持绿色状态 2.2集群变黄 症状:集

    2024年02月12日
    浏览(37)
  • 3分钟上手Python的命令行参数解析

    1 简介 处理命令行参数对许多程序来说都是必不可少的功能。今天为大家介绍 Python 中的 argparse 模块,它是 Python 标准库中的一个模块,它可以让开发者非常简单地为程序添加命令行参数接口,包括位置参数、可选参数、标志等,并自动生成帮助信息。 2 底层原理 argparse 模块

    2024年02月10日
    浏览(41)
  • 【小知识】argparse --- 命令行选项、参数和子命令解析器详解

    argparse模块提供了非常方便的命令行参数解析功能,能够大大简化命令行程序的开发。 现在的大型项目中都会运用argparse来管理项目中涉及的参数,在使用命令行时更好地定义模型参数。 搜索得到的参数解释都不是很清楚所以做个总结。 argparse定义四个步骤: 1.导入argparse包

    2024年02月03日
    浏览(37)
  • 【C++】开源:gflags命令行参数解析库配置使用

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍gflags命令行参数解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 项目Github地址: https://github.com/gflags/gflags gflags(

    2024年02月13日
    浏览(40)
  • 【教程科普】带命令行参数解析的C程序到底怎么写?

    带命令行参数解析的C程序到底怎么写? 最近工作上,遇到这样一个问题:我需要写一个C语言的程序,这个程序要求带命令行输入,之前有了解一些这方面的知识,本文将带大家好好梳理一下,希望对大家有所帮助。 最近工作上,遇到这样一个问题:我需要写一个C语言的程

    2024年02月01日
    浏览(36)
  • 【Linux 】getopts 可选参数_Bash技巧:介绍 getopts 内置命令解析选项参数的用法

    在 Linux bash shell 中,内置了一个 getopts 命令,可以处理以 ‘-’ 开头的选项参数。本篇文章通过多个实例详解 getopts 命令的用法。 getopts 命令简介 在 bash shell 上执行命令,常常会用到一些选项参数来指定不同的操作。例如 ls 命令的 -l、-a 选项等。 我们在编写 shell 脚本时,也

    2024年02月07日
    浏览(39)
  • 从零开始用Rust编写nginx,命令行参数的设计与解析及说明

    wmproxy 已用 Rust 实现 http/https 代理,  socks5 代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现 websocket 代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 国内: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy 设计目标

    2024年01月25日
    浏览(38)
  • nginx基础1——工作原理、安装配置、命令参数

    nginx简介: nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。 nginx由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。 nginx第一个公开版本0.1.0发布于2004年10月4日。其将源代码

    2024年02月16日
    浏览(40)
  • scalpel一款命令行漏洞扫描工具,支持深度参数注入,拥有一个强大的数据解析和变异算法

    免责声明 由于传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!所有工具安全性自测!!! 工具介绍 scalpel是一款

    2024年01月19日
    浏览(44)
  • 【gflags处理命令行参数的库运行程序时如何给定参数】

    gflags (之前称为Google Commandline Flags)是一个用于处理命令行参数的库。在很多C++项目中,特别是由Google开发的项目中,你会经常看到它的身影。这里是一些基本的、高频使用的方法和接口: 定义一个flag 使用 DEFINE_type 宏来定义一个命令行参数,其中 type 可以是int32、int64、

    2024年02月09日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包