【发布时间】:2020-09-30 15:16:42
【问题描述】:
我知道在 Java 中处理执行具有带空格路径的系统命令时已经有几十个问题,但我还没有找到针对我的确切情况的解决方案。
我在 Windows 10 计算机上使用 jdk-1.8.x 附带的 java.exe。我要执行的命令如下(我最终想在 Java 程序中使用ProcessBuilder,但我的问题并不取决于以这种方式执行的命令;如果我直接在终端中键入它,它仍然存在以及):
cmd.exe /C "G:\myself\...\My Folder\...\runtime\bin\java.exe" -jar "G:\myself\...\My Folder\...\application.jar" <app_args>
两个路径都包含My Folder,这是一个名称中带有空格的目录。但是,java.exe 的路径有效,但 application.jar 的路径无效。
我知道第一个路径有效,因为我可以运行:
cmd.exe /C "...\java.exe" -version
但是当我尝试运行第二个时,错误是:
'G:\myself\...\My' is not recognized as an internal or external command, operable program or batch file.
这是怎么回事? 为什么 java 的路径可以工作,而 jar 的路径却不行? java.exe -jar <jar_path>解析jar路径和终端解析java路径不同吗?
【问题讨论】:
-
你为什么使用
cmd.exe /C而不是直接调用java.exe? -
就 cmd.exe 而言,我承认我真的不知道它为什么会起作用,但我是从 PowerShell 运行它,除非我在开头添加该部分,否则 java.exe 不会执行。
-
要从 PowerShell 运行程序,您需要在它们前面加上
./- 这是为了防止无意中运行与内置命令同名的程序(与 Bash 相同)
标签: windows java-8 filepath java-process-runtime