繁体   English   中英

Spring Boot可执行文件JAVA_OPTS用空格覆盖

[英]Spring Boot executable JAVA_OPTS override with spaces

我正在使用Spring Boot 1.4.1创建一个可执行的Unix JAR文件(按照此处的说明)。 我正在使用自定义.conf文件在运行时设置JAVA_OPTS值。 使用以下内容可以正常工作:

JAVA_OPTS =“-Dspring.profiles.active = prod -Dflyway.validate-on-migrate = false -Djavax.net.ssl.trustStore = / var / myapp / truststore.jks -Djavax.net.ssl.trustStorePassword = changeit”

现在,我想覆盖已在application.yml文件(嵌入在JAR中)中配置的参数。 问题在于此参数的值中有空格。

我试过了:

JAVA_OPTS =“-Dmy.param =一个两个-Dspring.profiles.active =产品-Dflyway.validate-on-migrate = false -Djavax.net.ssl.trustStore = / var / myapp / truststore.jks -Djavax.net。 ssl.trustStorePassword = changeit”

...和...

JAVA_OPTS =“-Dmy.param =一个\\两个-Dspring.profiles.active = prod -Dflyway.validate-on-migrate = false -Djavax.net.ssl.trustStore = / var / myapp / truststore.jks -Djavax.net .ssl.trustStorePassword = changeit”

...和...

JAVA_OPTS = -Dmy.param =一个\\两个-Dspring.profiles.active = prod -Dflyway.validate-on-migrate = false -Djavax.net.ssl.trustStore = / var / myapp / truststore.jks -Djavax.net。 ssl.trustStorePassword =更改

...和...

JAVA_OPTS =“”-Dmy.param =一个\\两个“ -Dspring.profiles.active =产品-Dflyway.validate-on-migrate = false -Djavax.net.ssl.trustStore = / var / myapp / truststore.jks -Djavax .net.ssl.trustStorePassword = changeit”

但是我收到各种错误消息,例如:

错误:找不到或加载主类2

...要么...

/var/myapp/myapp.conf第1行:两个:找不到命令

我查看了嵌入在JAR文件顶部的代码,里面似乎是:

arguments=(-Dsun.misc.URLClassPath.disableJarChecking=true $JAVA_OPTS -jar $jarfile $RUN_ARGS "$@")

...但是我在解决如何将其转换为有效的JAVA_OPTS值时遇到麻烦

遇到相同的问题,发现用反斜杠转义嵌入式双引号确实可以解决问题,如下所示:

JAVA_OPTS="-Dmy.param=\"One Two\" -Dspring.profiles.active=prod -Dflyway.validate-on-migrate=false -Djavax.net.ssl.trustStore=/var/myapp/truststore.jks -Djavax.net.ssl.trustStorePassword=changeit"

我最终要做的是按照此处的说明使用外部化的application.yml 仍然不是我想要的,但是现在就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM