https://yuanjiaoc.com/tutorial/article/10188

介绍

从命令行中使用参数运行应用程序是很常见的。特别是在服务器端。通常情况下,我们不希望应用程序在每次运行时都做同样的事情:我们希望以某种方式配置其行为。

在这个简短的教程中,我们将探讨如何在Java中处理命令行参数。

在Java中获取命令行参数

由于main方法是Java应用程序的入口点,JVM通过其参数传递命令行参数。

传统的方法是使用一个String数组:

public static void main(String[] args) {// handle arguments
}

然而,Java 5引入了varargs,它是披着羊皮的数组。因此,我们可以用一个String vararg来定义我们的main:

public static void main(String... args) {// handle arguments
}

它们是相同的,因此选择它们完全取决于个人的品味和偏好。

主方法的方法参数包含命令行参数,其顺序与我们在执行时传递的参数相同。如果我们想访问我们得到了多少参数,我们只需要检查数组的长度。

例如,我们可以在标准输出上打印参数的数量和它们的值:

public static void main(String[] args) {System.out.println("Argument count: " + args.length);for (int i = 0; i < args.length; i++) {System.out.println("Argument " + i + ": " + args[i]);}
}

注意,在某些语言中,第一个参数将是应用程序的名称。另一方面,在Java中,这个数组只包含参数。

如何传递命令行参数

现在我们有了一个可以处理命令行参数的应用程序,我们急于尝试它。让我们看看我们有哪些选项。

命令行

最明显的方式是命令行。让我们假设我们已经编译了com.baeldung.commandlinearguments.CliExample类,其中有我们的主方法。

然后我们可以用下面的命令来运行它:

java com.baeldung.commandlinearguments.CliExample

它产生的输出如下:

Argument count: 0

现在,我们可以在类名后面传递参数:

java com.baeldung.commandlinearguments.CliExample Hello World!

而输出结果是:

Argument count: 2
Argument 0: Hello
Argument 1: World!

通常,我们把我们的应用程序作为一个jar文件发布,而不是作为一堆.class文件。比方说,我们把它打包在cli-example.jar中,并把com.baeldung.commandlinearguments.CliExample作为主类。

现在我们可以用下面的方法运行它,不需要参数。

java -jar cli-example.jar

或者带参数:

java -jar cli-example.jar Hello World!
Argument count: 2
Argument 0: Hello
Argument 1: World!

注意,Java将把我们在类名或jar文件名之后传递的每一个参数都视为我们应用程序的参数。因此,我们在这之前传递的所有参数都是JVM本身的参数。

IntelliJ

IntelliJ使用一个类似的过程来运行应用程序。它把这些选项简单地称为配置。

首先,我们需要右击main方法,然后选择运行'CliExample.main()'。

这将运行我们的程序,但它也将把它添加到运行列表中,以便进一步配置。

因此,要配置参数,我们应该选择 Run > Edit Configurations…,然后编辑程序参数文本框:

之后,我们应该点击确定并重新运行我们的应用程序,例如用工具栏上的运行按钮。

三方库

在简单的情况下,手工处理命令行参数是很直接的。然而,随着我们的要求变得越来越复杂,我们的代码也越来越复杂。因此,如果我们想创建一个有多个命令行选项的应用程序,使用第三方库会更容易。

幸运的是,有大量的这些库可以支持大多数的使用情况。两个流行的例子是Picocli和Spring Shell。

结论

让你的应用程序的行为可配置,总是一个好主意。在这篇文章中,我们看到了如何使用命令行参数来做到这一点。此外,我们还介绍了传递这些参数的各种方法。

Java 命令行参数[猿教程]相关推荐

  1. java命令行参数工具_Java方法中的参数太多,第8部分:工具

    java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...

  2. java 命令行参数 _java命令行参数

    原标题:java命令行参数 命令行参数就是main方法里面的参数String[] args他就是一个数组,args只是数据类型的一个名称,就是一个数组的变量,名称无所谓,类型没变就行了.这个就是程序的 ...

  3. Java 命令行参数

    Java 命令行参数 我们可以通过将命令行参数传递给main() 来将信息传递到程序中. 命令行参数是命令行上直接跟在程序名称后面的信息,当它 执行. 要访问 Java 程序中的命令行参数,请在 传递 ...

  4. java命令行参数写哪里_Java的命令行参数

    与类C语言一样,main函数都可以传入参数,这被称为命令行参数. 有些情况下这个参数还是很有意义的,比如Android源码中就会体现. Java中的命令行参数是如下格式的: main(String[] ...

  5. java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南

    Args4J 使用指南 Args4J 是一个用来出来命令行的工具. 在实际的项目中用到命令行的并不是很常见,但当真正使用到时,特别是在程序启动时配置一下参数的时候就很有用了,如果参数很多的话,一个一个 ...

  6. java命令行参数详解

    java 命令参数详解_赶路人儿的博客-CSDN博客_java命令行参数java命令用于启动 java 应用:它首先会启动 java 运行时环境(JRE),然后加载指定的类,调用类的main()方法. ...

  7. Java命令行参数理解

    前面已经看到多个使用Java数组的示例.每一个Java应用程序都有一个带String arg[]参数的main方法.这个参数表明main方法将接收一个字符串数组,也就是命令行参数. 例如,看一看下面这 ...

  8. java命令行参数_Java学习从入门到精通,JDK工具条知识点学习资料

    JDK是java的核心,包括java运行环境(java运行时环境),一堆java工具和类库(rt.jar)基于java.任何java应用服务器是一个内置的版本的JDK.因此掌握JDK是学习java的第 ...

  9. linux下java命令行参数_Java调用Linux命令行

    Java调用Linux命令行 Java语言以其跨平台性和简易性而著称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运行的环境交互的接口,这就是 ...

最新文章

  1. 调试Tomcat源码
  2. 自定义Activity的启动关闭动画
  3. Programming Computer Vision with Python (学习笔记五)
  4. 现在为什么面对着人多,陌生人的时候会紧张?
  5. 学习响应式BootStrap来写融职教育网站,Bootsrtap第六天移动端轮播图
  6. 运维学python用不上_不会Python开发的运维终将被淘汰?
  7. linux mysql异机备份_Linux环境下oracle数据库Rman备份异机恢复
  8. 罗永浩吐槽苹果功能更改 @库克:不要再胡来 做祸害用户体验的事
  9. android studio | openGL es 3.0增强现实(AR)开发 (2) .so文件的应用和理解
  10. 面试官:Java的重写和重载有什么区别?
  11. PC机(笔记本)安装Linux系统
  12. 计算机 医学 sci期刊,1分左右医学sci期刊
  13. 巴比特 | 元宇宙每日必读:微博动漫将招募全球各类虚拟偶像并为其提供扶持...
  14. NOKIA 手机旺旺 nokia 5230手机旺旺 手机旺旺软件下载
  15. 顶级程序员的心得 –– Coders at Work
  16. Unity下平面反射实现
  17. 依托同济大学建设的中国(上海)数字城市研究院揭牌成立
  18. 用ECharts生成统计图
  19. 调用百度人体分析api 实现人体分析
  20. 综合实践活动信息技术小学版第三册电子课本_人教版小学美术16年级电子课本图片+教材分析...

热门文章

  1. lua程序运行出错常见问题
  2. Visual Studio Code 单行、多行注释快捷键
  3. Laravel Excel3.1 实现Excel的导出和导入读取添加进数据库
  4. 从零开始的移动构造函数,拷贝构造函数详解(C++)
  5. linux网络及防火墙配置命令
  6. 百望云再获中国独角兽殊荣:链接商业企业,让交易更简单
  7. iPhone 4 问世 | 历史上的今天
  8. jsp ul设置滚动条_定义设置滚动条
  9. Sequential() 模型:搭建神经网络
  10. 从通讯录中导入联系人并去重