java -jar命令参数的单横杠-和双横杠--用法
java -jar命令参数的单横杠-和双横杠–用法
如下是一条典型的jar包启动参数,相信很多人都有用过:
java -jar -Xms4096M xxx.jar --server.port=8088 --spring.profiles.active=test
之前没有仔细看过,只知道-X**是jvm参数, --**是程序参数。今天无意中运行一下java -h命令,发现弹出的窗口提示:
也就是说,-**是java执行jar文件后可选的参数,但是很奇怪的是,其中并没有提到两个短杠的用法介绍。而从java命令提示看,“–server.port=8088 --spring.profiles.active=test”匹配的是java -jar命令中的[args…]段
那么这个双横杠"–"是什么鬼呢?
于是在idea中带参数debug启动项目,发现双横杠–后面参数对应的确实是springboot项目中main方法接收到的args参数。而且会把整个"–server.port=8088"作为一个字符串带入。
那么这个字符串又是怎么被接收的呢?跟进去看了一下源码,发现最后是在这个SimpleCommandLineArgsParser类中完成了参数的解析工作。
所以说双横杠的传参其实只是springboot中特定的传参用法,是我用久了误认为是java自带的传参格式了。
真相大白。