簡體   English   中英

嘗試從Java中的Runtime對象執行exe時出錯

[英]error when trying to execute exe from Runtime object in java

我正在運行Windows 7,並且正在嘗試使用Java中的以下命令運行一個exe文件:

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

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

編輯2:

我嘗試將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

這是錯誤的假設嗎?

您在C驅動器中存在權限問題。通過在C驅動器中手動執行"file.exe"進行檢查。更好的解決方案是將"file.exe"保留在C驅動器以外的其他位置並從那里執行。

也許,您需要將目錄包括到path中 您可以看看這個問題本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM