簡體   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