2012-08-06 69 views
0

我做了如下:Runtime.getRuntime()。exec(command);虛擬硬盤驅動器不工作?

subst A: "C\Desktop" 

現在,從Java代碼:

String command= "java -jar A:\test.jar" 
Process process = Runtime.getRuntime().exec(command); 

的JVM似乎在這裏,從來沒有掛執行這條線。當我運行通過"java -jar C:\Desktop\test.jar".它執行成功。

Runtime.getRuntime是否無法解析虛擬硬盤? 謝謝

回答

4

我假設你有\\t而不是\t並且你正在從錯誤流中讀取,所以你可以看到任何錯誤。 \t是製表符。

(MS-DOS的使用\作爲路徑分隔符的樂趣;)

轉儲出你所得到的錯誤,你應該看到這個問題。

+1

+1''t'(想知道爲什麼它可以在另一個驅動器上工作) – dacwe 2012-08-06 08:15:02

+0

噢對不起,我沒有面對任何問題,我會照顧它。我的問題是有些事情處理類沒有找到。我得到這個錯誤: – yami 2012-08-06 09:42:59

+0

你使用多個庫?一個罐子可以引用另一個罐子,如果該路徑不包含驅動器盤符,它可能會使用一個你不期望的盤符。 – 2012-08-06 09:47:01

1

java.lang.Process中的Javadoc中說

The parent process uses these streams to feed input to and get output from the subprocess. Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.

這意味着你沒有讀出或寫入及時的數據,導致緩衝區溢出關聯的進程。這可能是一個可能的問題。請閱讀javaworld上的article,並考慮及時在單獨的線程中實現讀取和寫入。