我正在运行 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
这是错误的假设吗?