路径上有空格的奇怪行为

时间:2013-05-23 07:07:08

标签: java

我有这种愚蠢的未知行为。在我的应用程序中,我需要启动Java进程来执行某些任务。所以在下面做:

1a) String[] ls = {"cmd",
                "/C",
                "\"C:\\t e m p\\run time\\jre\\bin\\java.exe\"",
                "-jar",
                "Canon.jar"};
ProcessBuilder p = new ProcessBuilder(ls);
p.redirectErrorStream();
Process pp = p.start();

以上工作完美。但是如果说Canon.jar的完整路径包含空格,则它不起作用。基本上我需要在quotes路径周围添加Canon.jar。即。

1b) String[] ls = {"cmd","/C",
                "\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
                 "\"C:\\Prac\\t e m p\\Canon.jar\""};

即使包含引号,上述内容仍无效。它说:

  

结束'C:\ Users \ Jatin \ Documents \ Prac \ t'不被识别为内部或外部命令,   可操作程序或批处理文件。

最大的问题是,下面也不起作用:

 1c) String[] ls = {"cmd","/C",
                "\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
                 "\"C:\\Prac\\temp\\Canon.jar\""};//contains no white space. 

它仍然说同样的错误。当Canon.jar的路径不包含空格时,它怎么能再次说出来呢?当java.exe工作时,为什么会说1a路径出现问题。

1 个答案:

答案 0 :(得分:2)

你真的需要cmd吗?考虑删除它。

ProcessBuilder p = new ProcessBuilder(new String[]{"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe","-jar",
               "C:\\Prac\\t e m p\\Canon.jar"};