我有这种愚蠢的未知行为。在我的应用程序中,我需要启动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
路径出现问题。
答案 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"};