当你不知道是否有空格时,使用Java的exec命令

Dav*_*ave 5 java build-process process runtime.exec

我正在与Java的Runtime exec方法中的space bug进行斗争.这是这个问题的独特之处:我试图执行的命令是一个传入的字符串,可能有也可能没有空格,不一定是任何特定的格式.无论哪种方式,我都需要执行它.如果没有空格,我很好; 如果有空格,我就不太好了.

我如何解释这两种情况?

奖金信息免费:其中一个重大问题似乎是我试图在c:\ program files\blablabla中调用可执行文件......并且exec似乎在'c:\ program'之后拆分空格.我也相信其他问题也会出现在参数中.

这是我可能得到的各种字符串的更具体的例子.这应该清除一些混乱:

  • C:\ someApp\someapp.exe
  • c:\ someApp\someapp.exe -someParam = foo
  • c:\ program files\someapp\someapp.exe
  • c:\ program files\someapp\someapp.exe -someParam = bar

第一个工作正常,因为它没有空格.第二个甚至可以,因为它在空间上分裂并使用第一个作为命令,第二个作为参数.第三个和第四个例子在第一个空格上分开,使用'C:\ program'和命令,'files ...'和(在第四个字符串的情况下)'-someParam = bar'作为参数.

Dav*_*ave 4

好吧,我通过做这样的事情得到了一些东西。请告诉我这种方法是否有问题:


try{
    String[] command = {"cmd", "/c", getMySuperAwesomeString()};
    Runtime.getRuntime().exec(command);
}catch(IOExecption ioe){
    System.err.println("I'm borken");
}

在相关说明中,我应该使用 ProcessBuilder 吗?