使用Java登录并重载JBoss服务器时遭遇CreateProcess错误求助
解决Java调用JBoss CLI时的CreateProcess error=2问题
嘿,我一眼就看出问题所在啦!你现在把完整的JBoss CLI命令行都当成单个字符串传给ProcessBuilder了,这可不对——ProcessBuilder会把这个一整串内容当作要执行的文件名称,而不是去调用jboss-cli.bat并传递后面的参数,系统当然找不到这个奇怪的“文件”,所以才抛出了CreateProcess error=2的错误。
正确的写法是拆分命令与参数
你需要把可执行文件的路径和每个命令参数分开,作为ProcessBuilder的多个参数传入,这样它才能正确识别程序和对应的参数:
ProcessBuilder processBuilder = new ProcessBuilder( "C:\\jboss\\jboss-eap-6.4\\bin\\jboss-cli.bat", "-c", "--controller=10.10.10.10", "--user=user", "--password=pass", "--command=:reload" ); processBuilder.inheritIO(); Process p = processBuilder.start(); try { p.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); }
为什么要这么做?
ProcessBuilder的构造方法如果接收单个字符串,它会直接把这个字符串当作可执行文件的路径去查找;而如果传入多个字符串,第一个字符串是可执行文件路径,后面的每个字符串都是独立的命令行参数,这样就能正确调用jboss-cli.bat并执行重载命令了。
另外还有个小提示:如果你的JBoss安装路径里包含空格,这种拆分参数的方式也能自动处理,不用手动给路径加引号,非常省心~
内容的提问来源于stack exchange,提问作者anumeha
相关产品推荐
相关产品推荐

