2013-05-01 37 views
0

我運行Windows 7運行exe可執行,並有我試圖在Java中使用以下命令來運行exe文件時:錯誤試圖從運行對象在java中

File dir = new File("C:\\PATH\\TO\\DIR"); 
String[] cmdArray = {"file.exe"}; 

if(dir.exists()){ 
    for(String s : dir.list()){ 
     if(s.equals(cmdArray[0])) 
      System.out.println("File exists!"); 
    } 
} 

Runtime.getRuntime().exec(cmdArray,null,dir); 

的EXEC(...)命令,但是,給我這個錯誤:

Cannot run program "file.exe" (in directory "C:\PATH\TO\DIR"): CreateProcess error=2, The system cannot find the file specified 

上述代碼確實打印出「文件存在!」所以文件在那裏,Java知道它在那裏。我不知道這是可能的。

另外,我需要使用Runtime.getRuntime().exex(...)。這個調用實際上在另一個我不想改變的方法中,所以替代解決方案對我來說不起作用。提前致謝!

編輯:我跑沒有管理員權限的CMD窗口中的文件,並得到了以下消息:

Error in Opening Configuration File in Read Mode 

所以我想我有權限問題。我將如何更改權限才能運行它?

EDIT2:

我試圖改變cmdArray這樣:

String[] cmdArray = {"C:\\PATH\\TO\\DIR\\file.exe"}; 

和它的工作就像一個魅力。一個問題,但。爲什麼這個工作,而不是其他方式?我假設的Runtime.exec()在CMD wibndow跑在較高的水平,像這樣:

pushd dir 
cmdArray[0] cmdArray[1] cmdArray[2] ... cmdArray[length - 1] 
popd dir 

這是錯誤的假設?

+0

你確定你的PATH包含'。'嗎? – lifus 2013-05-01 16:06:58

+0

供參考!調用Runtime.getRuntime()EXEC(** ** cmdarray,NULL,DIR)。與開始時定義的** cmdArray **不同。 – NINCOMPOOP 2013-05-01 16:08:04

+0

@NoobUnChained哦woops!那是一個錯字。在我的代碼中是正確的。 – user972276 2013-05-01 16:36:48

回答

0

您在C驅動器中有權限問題。請在C驅動器中手動執行"file.exe"進行檢查.Better解決方案將保持"file.exe"位於C驅動器以外的某個位置並從此處執行。

+0

我可以通過沒有權限問題的cmd提示來執行該文件 – user972276 2013-05-01 16:29:59

+0

現在文件位於C驅動器中,並且我爲測試目的硬編碼了該路徑。該文件應該駐留在用戶安裝的任何位置,所以如果真的如此,我需要它在C驅動器上工作。 – user972276 2013-05-01 16:33:12

+0

但是,如果用戶有該驅動器的權限問題,它將無法正常工作! – NINCOMPOOP 2013-05-01 16:38:44