2011-01-24 55 views
0

我正尝试在Java自己的cmd.exe窗口中启动Java命令行工具。我使用ProcessBuilder来启动以下操作:使用cmd.exe启动Java工具

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:\程序”。我期望从java.exe得到一个异常。我需要能够在一些参数中使用引号。有没有办法做到这一点?

+1

像你在上一个问题上的同一主题。我认为`/ k`不会做你的想法。 “ – 2011-01-24 12:54:02

+0

cmd.exe/k”C:\ Program Files(x86)\ JavaSoft \ jre \ 1.5.0_07 \ bin \ java。exe测试“如果你这样做,怎么样? – fmucar 2011-01-24 12:58:40

+0

据我所知,没有理由使用cmd.exe。只需直接启动java.exe – 2011-01-24 13:02:53

回答

2

从 “CMD /?”:

  1. 如果以下所有条件都满足,那么 命令行上的引号字符将被保留:

    • 没有/ S开关
    • 恰好两个引号字符
    • 两个引号字符之间没有特殊字符,其中特殊的是 其中之一:& <>()@^|
    • 有 字符
    • 在两个引号字符之间的字符串是一个 可执行文件的名称在两个引号之间的一个或多个空格字符。
  2. 否则,老办法是,看第一个字符是一个报价 字符,如果是,舍去开头的 字符并删除最后一个引号的命令行, 在最后保留任何文字上 字符 引用字符。

好吧,这解释了为什么它,如果有两个以上报价不工作。但是这并不能解释如何解决问题。谢天谢地,谷歌has the answer

cmd.exe /k ""d:\laj soft\java.exe" "test a"" 
0

尝试以下操作:

Java的罐子your_jar_archive.jar

0

如果你有安装在您的JDK其中超过控制,它的一个好主意,在不包含位置,它安装空间。 “程序文件”是Windows上的默认位置,但它几乎总是会导致问题。

0

你可以尝试使用这个旧的DOS技巧。将程序文件称为程序1。这通常会让我解决问题。