传递给执行官的路径
我正在尝试使用exec函数。 可执行文件的路径包含空格,这让我感到悲伤我的代码看起来像这样
Runtime.getRuntime().exec("\"C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation.exe\"", null, new File("\"C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation\""));
当执行此操作时,我得到一个例外 –
Cannot run program ""c:\Program"
如果有人能帮我解决这个问题,我将不胜感激
提前致谢
从Runtime.exec(String command, String[] envp, File dir)
:
在具有指定环境和工作目录的单独进程中执行指定的字符串命令。
这是一种方便的方法。 调用
exec(command, envp, dir)
的forms与调用exec(cmdarray, envp, dir)
,其中cmdarray
是command
中所有标记的数组。更准确地说,
command
字符串使用由调用new StringTokenizer(command)
创建的StringTokenizer
分解为标记,而不进一步修改字符类别。 然后,由标记器生成的标记以相同的顺序放置在新的字符串数组cmdarray
中。
这意味着无论外部引号如何,第一个字符串都会被分成标记。 使用Runtime.exec(String[] cmdarray, String[] envp, File dir)
版本来避免可执行路径的标记化。
或者,使用ProcessBuilder
:
File d = new File("C:/Program Files (x86)/ASL/_ASL Software Suite_installation"); ProcessBuilder pb = new ProcessBuilder(d.getAbsolutePath() + "/main.exe"); Process p = pb.directory(d) .start();
看到:
- 为什么要避免在java中使用Runtime.exec()?
- ProcessBuilder与Runtime.exec()
您不需要再次引用文件名。 Java将为您处理它,只需将正确的文件名作为字符串给出
Runtime.getRuntime().exec( "C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation.exe", null, new File("C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation"));