1

有人能找出这段代码有什么问题吗:

Runtime rt = Runtime.getRuntime();
Process pr;
File myFolder = new File("C:\\Temp");
pr = rt.exec("myExec.bat", null, myFolder);
pr.waitFor();
pr.destroy();

当我运行此代码时,出现以下异常(而使用的文件和文件夹按指定存在):

java.io.IOException: Cannot run program "myExec.bat" (in directory "C:\Temp"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:431)
    at com.radml.radmlp.main(Test.java:10)
4

2 回答 2

4

rt.exec 期望没有路径信息的文件位于用户目录中,而不是您指定用作工作目录的目录中。以这种方式使用它

    Runtime rt = Runtime.getRuntime();
    Process pr;
    File myFolder = new File("C:\\Temp");
    pr = rt.exec(new File(myFolder, "myExec.bat").getAbsolutePath(), null, myFolder);
    pr.waitFor();
    pr.destroy();

只要您的文件 c:\Temp\myExec.bat 存在,它就应该可以工作。

格瑞兹,GHad

于 2010-07-02T13:57:37.247 回答
1

您确定您的 bat 文件位于“ C:\Temp\myExec.bat”中吗?

(只是一个猜测,但请确保该文件实际上没有被调用 C:\Temp\myExec.bat.txt

于 2010-07-02T13:54:08.123 回答