3

我有这种愚蠢的未知行为。在我的应用程序中,我需要启动一个 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.jarIE

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

4

1 回答 1

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"};
于 2013-05-23T07:37:17.847 回答