2011-01-24 37 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。這通常會讓我解決問題。