2014-01-05 91 views
0

我第二次遇到使用ProcessBuilder從系統調用中提取的值的問題。與Java中的ProcessBuilder混淆

@org.junit.Test 
public void test() { 
    Process process = null; 
    ProcessBuilder pb = new ProcessBuilder("QQ.exe"); 
    pb.directory(new File("D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\")); 
    try { 
     process = pb.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    } 

以上的結果是:「無法運行程序 「爲QQ.exe」(在目錄 「d:\程序文件(x86)\騰訊\ QQ \ BIN」):CreateProcess的錯誤= 2,該系統找不到指定的文件「

那麼Process.dir()的功能是什麼? 有人告訴我,我指定的目錄是運行過程的工作目錄 - 它無助於找到可執行文件。 但後續的代碼可以運行正確

@org.junit.Test 
public void test() { 
    Process process = null; 
    ProcessBuilder pb = new ProcessBuilder("cmd","/c","QQ.exe"); 
    pb.directory(new File("D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\")); 
    try { 
     process = pb.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    } 

的QQ.EXE不path.Who能告訴我爲什麼嗎?我是中國人。我不擅長英語,所以請原諒我的英語這種可憐的道歉。

+0

您是否知道Javadoc for Java Standard Edition [已有中文版](http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/index.html)?或者至少他們是。看起來網站不再存在:(甲骨文在他們的網站上有很多破鏈接 –

+0

http://gceclub.sun.com.cn/這個websit無法在中國訪問 – chlstar

回答

1

ProcessBuilder.directory(java.io.File)定義流程的工作目錄,而不是 「發射」,所以:QQ.exe啓動與工作目錄D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe沒有找到(不%PATH%

情況1

案例2:cmd.exe開始於工作目錄D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\然後QQ.exe啓動並找到(cmd在%PATH%QQ.exe當前工作dir)

我們可以假設ProcessBuilder啓動該過程,然後執行工作目錄更改。

+0

非常感謝! – chlstar