使用cmd.exe启动Java工具

时间:2011-01-24 12:46:56

标签: java cmd

我正在尝试从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中获得异常。我需要能够在一些参数中使用引号。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

来自“cmd /?”:

  
      
  1. 如果满足以下所有条件,则在上面引用字符   命令行被保留:

         
        
    • 否/ S开关
    •   
    • 正好两个引号字符
    •   
    • 两个引号字符之间没有特殊字符,其中特殊字符   以下之一:&<>()@ ^ |
    •   
    • 两个引号之间有一个或多个空白字符   字符
    •   
    • 两个引号字符之间的字符串是一个名称   可执行文件。
    •   
  2.   
  3. 否则,旧行为是查看第一个字符是否为引号   角色,如果是这样,剥去领先   字符并删除最后一个引用   命令行中的字符,   在最后一个之后保留任何文本   引用字符。
  4.   

好的,这解释了为什么如果有两个以上的引号它不起作用。但这并不能解释如何解决问题。谢天谢地,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。这通常会让我解决问题。