欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > java kotlin 命令行解析

java kotlin 命令行解析

2024/10/24 4:31:32 来源:https://blog.csdn.net/heeheeai/article/details/139788942  浏览:    关键词:java kotlin 命令行解析

在 Java 中解析命令行字符串可以使用以下几种方法:

1. 使用 args 参数

当程序启动时,主方法(main 方法)会接收一个 String 数组作为参数,即 args。这些参数就是从命令行传递过来的。

示例代码:

object CommandLineParser {@JvmStaticfun main(args: Array<String>) {for (arg in args) {println(arg)}}
}

运行程序并传递命令行参数:

java CommandLineParser arg1 arg2 arg3

输出:

arg1
arg2
arg3

2. 使用 Apache Commons CLI

Apache Commons CLI 是一个专门用于解析命令行参数的库,功能强大且易于使用。

首先,添加依赖(以 Maven 为例):

<dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>1.8.0</version>
</dependency>

示例代码:


import org.apache.commons.cli.*object CommandLineParser {@JvmStaticfun main(args: Array<String>) {// 定义命令行选项val options = Options()options.addOption("h", "help", false, "show help")options.addOption("v", "version", false, "show version")options.addOption("f", "file", true, "file to process")val parser = DefaultParser()var cmd: CommandLine? = nulltry {cmd = parser.parse(options, args)if (cmd!!.hasOption("h")) {val formatter = HelpFormatter()formatter.printHelp("CommandLineParser", options)System.exit(0)}if (cmd.hasOption("v")) {println("Version 1.0")System.exit(0)}if (cmd.hasOption("f")) {val fileName = cmd.getOptionValue("f")println("Processing file: $fileName")}} catch (e: ParseException) {println("Failed to parse command line properties")e.printStackTrace()}}
}

3. 使用 JCommander

JCommander 是一个用于解析命令行参数的库,使用方便且功能强大。下面是一个详细的示例演示如何在 Java 中使用 JCommander 解析命令行参数。

添加依赖

首先,使用 Maven 添加 JCommander 库的依赖:

<dependency><groupId>com.beust</groupId><artifactId>jcommander</artifactId><version>1.82</version>
</dependency>
示例代码

下面是一个完整的示例代码,演示如何使用 JCommander 解析命令行参数:


import com.beust.jcommander.JCommander
import com.beust.jcommander.Parameter
import com.beust.jcommander.ParameterExceptionclass CommandLineParser {@Parameter(names = ["--help", "-h"], help = true, description = "display help info")private var help = false@Parameter(names = ["--version", "-v"], description = "display version info")private var version = false@Parameter(names = ["--file", "-f"], description = "files that need to be processed")private var file: String? = nullcompanion object {@JvmStaticfun main(args: Array<String>) {val main = CommandLineParser()val jc = JCommander.newBuilder().addObject(main).build()try {jc.parse(*args)if (main.help) {jc.usage()return}if (main.version) {println("Version 1.0")return}if (main.file != null) {println("Processing file: " + main.file)} else {println("No file provided. Use -f or --file to specify a file.")}} catch (e: ParameterException) {e.printStackTrace()jc.usage()}}}
}
运行程序并传递命令行参数

编译并运行程序,可以通过不同的命令行参数测试程序:

  1. 显示帮助信息:

    java CommandLineParser -h
    

    输出:

    Usage: <main class> [options]Options:-h, --help      display help info-v, --version   display version info-f, --file      files that need to be processed
    
  2. 显示版本信息:

    java CommandLineParser -v
    

    输出:

    Version 1.0
    
  3. 处理文件:

    java CommandLineParser -f myfile.txt
    

    输出:

    Processing file: myfile.txt
    
  4. 未提供文件时的提示信息:

    java CommandLineParser
    

    输出:

    No file provided. Use -f or --file to specify a file.
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com