0

我正在运行 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

这是错误的假设吗?

4

2 回答 2

0

也许,您需要将您的目录包含到您的路径中。你可以看看这个问题这个教程

于 2013-05-01T17:36:24.840 回答
0

您在 C 驱动器中遇到权限问题。通过"file.exe"在 C 驱动器中手动执行进行检查。更好的解决方案是保留"file.exe"在 C 驱动器以外的某个位置并从那里执行。

于 2013-05-01T16:02:35.140 回答