2016-11-23 55 views
0

我使用Spring Boot 1.4.1創建可執行的Unix JAR文件(根據指令here)。我正在使用自定義的.conf文件在運行時設置JAVA_OPTS值。這一直工作正常,其內容如下:Spring Boot可執行文件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=One Two -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=One\ Two -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=One\ Two -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=One\ Two" -Dspring.profiles.active=prod -Dflyway.validate-on-migrate=false -Djavax.net.ssl.trustStore=/var/myapp/truststore.jks -Djavax.net.ssl.trustStorePassword=changeit"

但我得到的各種錯誤信息,如:

Error: Could not find or load main class Two

......或者......

/var/myapp/myapp.conf line 1: Two: command not found

我看着那已嵌入到了JAR文件的頂部裏面的代碼,它似乎是:

arguments=(-Dsun.misc.URLClassPath.disableJarChecking=true $JAVA_OPTS -jar $jarfile $RUN_ARGS "[email protected]") 

...但我有麻煩工作如何轉變成一個JAVA_OPTS值的作品

+0

空間(和報價)特別是在-D論點論據是令人難以置信的難以得到的權利與bash腳本,在某些情況下是不可能的。我建議將該配置放在環境變量或配置文件中。 –

+0

你試過這個'JAVA_OPTS = -Dmy.param =「一個兩個」-D ..........' –

+0

@LipingHuang從我最初設置的時候(沒有新的參數)整條線需要被引用,否則我得到'-Dflyway.validate-on-migrate = false:command not found' – Catchwa

回答

0

我最終做的是根據指令here使用外部化的application.yml。仍然不完全是我想要的,但它現在會做。

0

有同樣的問題,發現與反斜槓嵌入式雙引號的伎倆,就像這樣:

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" 
相關問題