Java OSX上的ProcessBuilder

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开关 退出!”

我能够在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开关

退出!”

为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仅在单独指定每个参数时才起作用。不幸的是,这些文件没有具体说明这一点。