2016-01-29 56 views
2

我想在執行java -jar時使用環境變量作爲JVM選項。爲什麼我的環境變量作爲JVM選項被錯誤地處理?

我要執行它的命令:

java -XX:onOutOfMemory='echo test' -jar foo.jar 

當我運行上面的命令是,罐子就會運行。

(如果您沒有foo.jar,您將收到Error: Unable to access jarfile foo.jar錯誤,但這仍然意味着該選項得到正確使用)。

但是,當我創建一個包含JVM選項的環境變量,並使用該變量運行命令。

OOM="-XX:onOutOfMemory='echo test'" 
java $OOM -jar foo.jar 

總比我收到以下錯誤:

Error: Could not find or load main class test' 

這似乎是java命令被忽略了引號 'echo測試'。

尋找類似的問題on SOon other websites後,我嘗試使用引號的各種變化:

OOM="-XX:OnOutOfMemoryError=\"echo test\"" 
OOM='-XX:OnOutOfMemoryError="echo test"' 
OOM=-XX:OnOutOfMemoryError="echo test" 

但他們都產生相同的錯誤。

An article from Oracle關於JVM選項,提及使用分號:

-XX:OnOutOfMemoryError="<cmd args>; <cmd args>" 

但分號的目的是爲了分隔多個命令,而不是命令和參數。所以這不能解決我的問題。

有誰知道我可以如何正確地將-XX:onOutOfMemory='echo test'選項移動到環境變量中?

+0

'回聲測試'並沒有真正的目的。我用它作爲例子。我想要執行的實際命令是:'kill -9%p'。 – Jipo

回答

相關問題