我正在运行Windows 7并且有一个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 :(得分:0)
您在C盘中遇到权限问题。通过在C盘中手动执行"file.exe"
来检查.Better解决方案是将"file.exe"
保留在C盘以外的某个位置并从那里执行
答案 1 :(得分:0)
也许,您需要将目录包含在path中。您可以查看this question和this tutorial