Java OSX上的ProcessBuilder
我能够在windows上成功执行此操作:Java OSX上的ProcessBuilder,java,macos,runtime.exec,processbuilder,Java,Macos,Runtime.exec,Processbuilder,我能够在windows上成功执行此操作: builder=newprocessbuilder(“cmd.exe”、“/c”、“nmap”+ipRange、&cd”) 但OSX上的这一点失败了: builder=newprocessbuilder(“/usr/local/bin/nmap”,ipRange) 错误如下: “从2012年03月22日09时51分开始实施Nmap 5.51() 无效的主机表达式:127.0.0.1-pt:80--只允许在IPv6地址中使用冒号,然后需要-6开关 退出!”
builder=newprocessbuilder(“cmd.exe”、“/c”、“nmap”+ipRange、&cd”)代码>
但OSX上的这一点失败了:
builder=newprocessbuilder(“/usr/local/bin/nmap”,ipRange)代码>
错误如下:
“从2012年03月22日09时51分开始实施Nmap 5.51()
无效的主机表达式:127.0.0.1-pt:80--只允许在IPv6地址中使用冒号,然后需要-6开关
退出!”
为OSX创建ProcessBuilder的正确方法是什么?
谢谢我猜您正试图在ipRange
中将两个单独的参数作为一个字符串传递。ProcessBuilder可能会将ipRange字符串用引号括起来,并弄乱命令语法。您需要单独添加所有参数
不是这样的:
new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar");
new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar");
但就像这样:
new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar");
new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar");
我猜您试图在ipRange
中将两个单独的参数作为一个字符串传递。ProcessBuilder可能会将ipRange字符串用引号括起来,并弄乱命令语法。您需要单独添加所有参数
不是这样的:
new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar");
new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar");
但就像这样:
new ProcessBuilder("/usr/local/bin/nmap", "-foo foo -bar bar");
new ProcessBuilder("/usr/local/bin/nmap", "-foo", "foo", "-bar", "bar");
非常感谢,这就解决了问题。你知道为什么它不是windows上的问题吗?基本上,如果你以前的版本在windows上工作,你的幸运。但ProcessBuilder仅在单独指定每个参数时才起作用。不幸的是,这些文件没有具体说明这一点。非常感谢,这就解决了问题。你知道为什么它不是windows上的问题吗?基本上,如果你以前的版本在windows上工作,你的幸运。但ProcessBuilder仅在单独指定每个参数时才起作用。不幸的是,这些文件没有具体说明这一点。