[英]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.