2017-10-04 92 views
0

我試圖在使用Groovy的WildFly 10上取消部署應用程序。對於取消部署,我通過一個Groovy腳本使用Groovy腳本取消部署WildFly 10失敗

'{Wildfly_home}/bin/jboss-cli.sh -c --command="undeploy {earfile}"'.execute() 

該命令沒有得到所有執行時,執行下面的命令。所以我捕獲錯誤流給了我以下消息:

'***.ear"' is assumed to be a command(s) but the commands to execute have been specified by another argument: ["undeploy] 

我試着刪除雙引號,但沒用。
任何人都可以幫助我嗎?

+1

你的耳朵文件在路徑中是否有空格? – Vampire

+0

文件路徑中沒有空格。 –

+0

當您從shell運行它時,成功的命令看起來如何? – daggett

回答

0

只是一個長鏡頭:看說明書

https://docs.jboss.org/author/display/WFLY/Command+Line+Interface?_sscc=t

我建議像

'{Wildfly_home}/bin/jboss-cli.sh -c --command=undeploy\ {earfile}'.execute() 

'{Wildfly_home}/bin/jboss-cli.sh -c "--command=undeploy {earfile}"'.execute() 

請注意,這個想法是有解釋器解析所有的 - 命令...作爲一個單一的參數,mayb通過這種方式,我們可以按照預期的方式獲得參數。

編輯

也許你的問題是執行整個命令行的方式。試圖做這樣的事情?

def arguments = [ '/bin/sh', '-c', '/wherever/it/is/jboss-cli.sh', '-c', '--command=undeploy /some/dir/your.ear' ] 
ProcessBuilder builder = new ProcessBuilder(executionChain); 
builder.environment().putAll(envVars);// optional 
builder.directory(baseDir); // optional 
Process p = builder.start(); 
int ret = p.waitFor(); 

也許這種方式解釋器將停止傷害你通過分離命令參數傷害你。

+0

我試過了你的第一個建議,它給了我同樣的錯誤信息。我嘗試了第二種方式,但仍然錯誤爲'***。耳朵「'被假定爲命令,但是要執行的命令已經由另一個參數指定:[」--command = undeploy] –

+0

編輯答案,以便按照現在在Java中推薦的方式手冊。看起來你的問題是毆打命令行解釋器,以便將你的論點集中在一起, –

0

我可以解決這個問題。所編輯的命令如下

「{} Wildfly_home -c /bin/jboss-cli.sh --command = '取消部署{earfile}'」。執行()

我交換了單引號雙報價,反之亦然。它爲我工作。 謝謝你的幫助。