gpt4 book ai didi

Java ProcessBuilder 忽略空格

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:26 25 4
gpt4 key购买 nike

我尝试通过 Windows 命令 shell 从 Java 启动程序,但遇到了我自己无法解决的错误。我使用 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 {...}

我的问题是程序路径中的空格被忽略。控制台输出:

[cmd.exe, /c, C:\Program Files (x86)\TightVNC\tvnserver.exe -controlservice -connect 172.20.242.187] Der Befehl "C:\Program" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

(C:\程序找不到)。

在网络上,我什至在 StackOverflow 上也发现了类似的问题,而其他网站的做法与我完全一样,请参阅 Run cmd commands through java 中的示例。不同之处在于,我将参数作为 http://www.tutorialspoint.com/java/lang/processbuilder_command_list.htm 中提到的列表传递。

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

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

最佳答案

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

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

关于Java ProcessBuilder 忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com