2017-10-04 54 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}'”。执行()

我交换了单引号双报价,反之亦然。它为我工作。 谢谢你的帮助。