首页 > 解决方案 > 为什么 Java 中的 Runtime.getRuntime().exec() 找不到“chgport.exe”?

问题描述

在 Java 中,我尝试运行:
Process p = Runtime.getRuntime().exec("C:\\Windows\\System32\\chgport.exe");
以及
Process p = Runtime.getRuntime().exec("chgport.exe");

但得到以下异常:

java.io.IOException: Cannot run program "C:\Windows\System32\chgport.exe": CreateProcess error=2, 系统找不到指定的文件

我正在使用 NetBeans IDE,它使用管理员凭据运行。

标签: javawindows

解决方案


我试过你的代码,它工作正常,试试这样:

String[] command = {"chgport"};
ProcessBuilder pb = new ProcessBuilder(command);
pb.directory(new File("C:/Windows/System32/"));
pb.redirectErrorStream(true);
Process p = pb.start();

我从 Eclipse 中尝试了这两种方法,并且都运行良好是否有可能您没有以管理员权限运行 IDE?
您可以尝试关闭IDE并右键单击以管理员身份运行吗?

    try {
        Process p = Runtime.getRuntime().exec("C:\\Windows\\System32\\mspaint.exe");
        p.waitFor();

        String[] command = {"mspaint"};
        ProcessBuilder pb = new ProcessBuilder(command);
        pb.directory(new File("C:/Windows/System32/"));
        pb.redirectErrorStream(true);
        Process p2 = pb.start();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

推荐阅读