我正在尝试从Java启动自己的cmd.exe窗口中的Java命令行工具。我使用ProcessBuilder启动以下内容:
cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe"
这很有效。这也有效:
cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe" -version
但是当我尝试运行以下
时cmd.exe /k "C:\Program Files (x86)\JavaSoft\jre\1.5.0_07\bin\java.exe" "test a"
我收到错误消息,说找不到“C:\ Program”。我希望从java.exe中获得异常。我需要能够在一些参数中使用引号。有没有办法做到这一点?
答案 0 :(得分:2)
来自“cmd /?”:
如果满足以下所有条件,则在上面引用字符 命令行被保留:
- 否/ S开关
- 正好两个引号字符
- 两个引号字符之间没有特殊字符,其中特殊字符 以下之一:&<>()@ ^ |
- 两个引号之间有一个或多个空白字符 字符
- 两个引号字符之间的字符串是一个名称 可执行文件。
- 否则,旧行为是查看第一个字符是否为引号 角色,如果是这样,剥去领先 字符并删除最后一个引用 命令行中的字符, 在最后一个之后保留任何文本 引用字符。
醇>
好的,这解释了为什么如果有两个以上的引号它不起作用。但这并不能解释如何解决问题。谢天谢地,Google has the answer:
cmd.exe /k ""d:\laj soft\java.exe" "test a""
答案 1 :(得分:0)
请尝试以下操作:
java -jar your_jar_archive.jar
答案 2 :(得分:0)
如果您可以控制JDK的安装位置,最好将其安装在不包含空格的位置。 “程序文件”是Windows上的默认位置,但它几乎总是会导致问题。
答案 3 :(得分:0)
您可以尝试使用旧的DOS技巧。请参阅程序文件progra~1。这通常会让我解决问题。