Java ProcessBuilder忽略空白

Java ProcessBuilder忽略空白,java,cmd,processbuilder,Java,Cmd,Processbuilder,我试图用Java通过Windows命令shell启动一个程序,但遇到了自己无法解决的错误。我使用ProcessBuilder将参数传递给命令shell 片段: try{ List<String> list = new ArrayList<String>(); list.add("cmd.exe"); list.add("/c"); list.add("C:\\Program Files (x86)\\Tigh

我试图用Java通过Windows命令shell启动一个程序,但遇到了自己无法解决的错误。我使用ProcessBuilder将参数传递给命令shell

片段:

try{
        List<String> list = new ArrayList<String>();
        list.add("cmd.exe");
        list.add("/c");
        list.add("C:\\Program Files (x86)\\TightVNC\\tvnserver.exe -controlservice -connect 172.20.242.187");
        ProcessBuilder builder = new ProcessBuilder(list);
        System.out.println(builder.command());
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while(true){
            line = r.readLine();
            if(line == null) { break; }
            System.out.println(line);
        }
} catch {...}
试试看{
列表=新的ArrayList();
添加(“cmd.exe”);
列表。添加(“/c”);
添加(“C:\\ProgramFiles(x86)\\TightVNC\\tvnserver.exe-controlservice-connect 172.20.242.187”);
ProcessBuilder=新的ProcessBuilder(列表);
System.out.println(builder.command());
builder.redirectErrorStream(true);
进程p=builder.start();
BufferedReader r=新的BufferedReader(新的InputStreamReader(p.getInputStream());
弦线;
while(true){
line=r.readLine();
如果(line==null){break;}
系统输出打印项次(行);
}
}捕获{…}
我的问题是程序路径中的空白被忽略。 控制台输出:

[cmd.exe,/c,c:\Program Files(x86)\TightVNC\tvnserver.exe-controlservice-connect 172.20.242.187] 在“C:\Program”之前,输入的是falsch geschrieben命令 我不知道

(找不到C:\程序)

在网络上,我发现了类似的问题,甚至在StackOverflow和其他网站上也发现了类似的问题,正如我所做的一样,见 由于不同,我将参数作为中提到的列表传递

所以我不明白为什么我的命令不起作用。谢谢你的帮助

编辑我必须动态添加路径,以便在创建ProcessBuilder对象时无法传递参数。

如果路径包含空格,则需要双引号(
\”
):

    list.add("\"C:\\Program Files (x86)\\TightVNC\\tvnserver.exe\" -controlservice -connect 172.20.242.187");

尝试在
“\”C:\\Program Files(x86)\\TightVNC\\tvnserver.exe\”-controlservice-connect
172.20.242.187周围添加双qoutes“谢谢,我做到了!我也尝试了这种方法,但也在\“谢谢!