(已解决)jar包启动命令中的自定义变量参数(-D...)无法被服务识别
问题现象:今天在使用脚本文件(.sh文件)启动 一个java服务时,发现脚本启动命令中添加的变量参数无法被服务识别到!!!问题分析:下面将通过一个java服务(gateway网关服务)来演示本文章出现的问题现象!首先查看当前nacos注册中心的服务列表,可以看见并没有gateway服务:1、本机IDEA启动测试:接着先在本机IDEA开发工具上测试该java服务(gateway网关服务)源码的启动是
目录
问题现象:
今天在使用脚本文件(.sh文件)启动 一个java服务时,发现脚本启动命令中添加的变量参数无法被服务识别到!!!
问题分析:
下面将通过一个java服务(gateway网关服务)来演示本文章出现的问题现象!
首先查看当前nacos注册中心的服务列表,可以看见并没有gateway服务:
1、本机IDEA启动测试:
接着先在本机IDEA开发工具上测试该java服务(gateway网关服务)源码的启动是否正常,且变量参数是否可用。
在启动类配置项中添加如下图所示的参数,作用是为了:
让程序代码能读取到这些变量参数,并注册到nacos中心,成为微服务!
gateway服务启动成功,端口是8001:
查看nacos注册中心:
可以看见服务是正常地注册到nacos中心了,也可以进一步查看gateway服务详情来确认:
由此可知IDEA中配置的变量参数是生效了,可以被服务成功识别到的!
接下来是jar包测试!
2、jar包脚本命令启动测试
先把1、中本机IDEA启动的gateway服务关闭,再查看nacos中心的服务列表:
可以看见此时已经没有gateway服务了,接下来执行脚本文件来通过该服务的jar包启动该服务,脚本文件内容如下:
使用脚本命令启动服务:
启动成功:
查看nacos注册中心,并没有发现gateway服务:
查阅网上资料发现有一个说法是:
-D 变量参数要放在 -jar 命令前面,放在后面会失效!
于是我修改了脚本文件如下:
再启动,确实可以了:
感觉挺神奇的,想到这个-D 变量参数原来和 -jar 的顺序有关,于是我又做了一下尝试,如下:
格式为:java -jar -X... -D... 包名($APP_NAME) >...
这种情况下也是可以的,由此可见,关于这个顺序的特点,网上提到的-D 变量参数 放在 -jar 后面会失效的说法其实是有问题,更准确的描述应该是:
1、-D 变量参数 放在 -jar 前面,可以生效;
2、-D 变量参数 放在 -jar 后面,但必须要放在 包名(xxx.jar) 前面,也可以生效。
总结:-D 变量参数 要放在 包名(xxx.jar) 前面。
解决方法:
脚本中jar包的启动命令从:
nohup java -jar -Xms256m -Xmx2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m $APP_NAME -Dspring.profiles.active=dev -Dspring.cloud.nacos.custom=true -Ddubbo.registry.custom=true -Dspring.cloud.nacos.config.server-addr=192.168.16.230:8848 -Dspring.cloud.nacos.config.namespace=a605e7bd-ef02-4da6-bc70-2dbb1a17eab6 > run.log 2>&1 &
修改为以下两种都可以:
1、格式为:java -D... -jar 包名 >...
nohup java -Dspring.profiles.active=dev -Dspring.cloud.nacos.custom=true -Ddubbo.registry.custom=true -Dspring.cloud.nacos.config.server-addr=192.168.16.230:8848 -Dspring.cloud.nacos.config.namespace=a605e7bd-ef02-4da6-bc70-2dbb1a17eab6 -jar -Xms256m -Xmx2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m $APP_NAME > run.log 2>&1 &
2、格式为:java -jar -D... 包名 >...
nohup java -jar -Xms256m -Xmx2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Dspring.profiles.active=dev -Dspring.cloud.nacos.custom=true -Ddubbo.registry.custom=true -Dspring.cloud.nacos.config.server-addr=192.168.16.230:8848 -Dspring.cloud.nacos.config.namespace=a605e7bd-ef02-4da6-bc70-2dbb1a17eab6 $APP_NAME > run.log 2>&1 &
更多推荐
所有评论(0)