如何在输入命令参数值具有破折号字符的情况下使用Java processBuilder类

如何在输入命令参数值具有破折号字符的情况下使用Java processBuilder类,java,Java,我希望使用java processBuilder类从我的服务运行一个应用程序,但是该应用程序的命令行参数中包含带破折号的值 e、 g.>app-B8-e u-law 当我创建processBuilder实例并将“-e u-law”作为命令参数之一传入时,它似乎无法处理参数值中的破折号。是否有办法使其工作?您需要将每个字符串标记,即每个由空格分隔的命令子字符串,分别添加到ProcessBuilder的命令参数数组或列表中。对于此命令行 e.g. >app -b 8 -e u-law 您有5

我希望使用java processBuilder类从我的服务运行一个应用程序,但是该应用程序的命令行参数中包含带破折号的值

e、 g.>app-B8-e u-law


当我创建processBuilder实例并将“-e u-law”作为命令参数之一传入时,它似乎无法处理参数值中的破折号。是否有办法使其工作?

您需要将每个字符串标记,即每个由空格分隔的命令子字符串,分别添加到ProcessBuilder的命令参数数组或列表中。对于此命令行

e.g. >app -b 8 -e u-law
您有5个字符串标记,app,-b,8,-e和u-law(因为u和破折号之间没有间隙)。然后,您可以这样做:

List<String> list = new ArrayList<>();
list.add("app"); 
list.add("-b");
list.add("8"); 
list.add("-e"); 
list.add("u-law");
ProcessBuilder pBuilder = new ProcessBuilder(list);

你需要逃出破折号吗?@charlesbabage:不。他需要在命令字符串中分离标记。太好了!!!谢谢你这么快的回复,非常感谢。我缺少的是每个字符串必须是一个单独的条目。对于像:-c1….这样的参数。。。。我想我可以把它放在一个字符串条目中:“-c1”,另一个有破折号的值也是一样:-eu-law。。。我甚至试着为这一个单独的字符串,但错过了其他只涉及空间的单独字符串。现在可以了。谢谢
String[] commands = {"app", "-b", "8", "-e", "u-law"};
ProcessBuilder pBuilder = new ProcessBuilder(commands);