得到IOException CreateProcess error = 2,系统找不到指定的文件

时间:2016-12-13 10:57:35

标签: java eclipse processbuilder

我是ProcessBuilder的新手。今天我正在编写一个简单的应用程序来执行“java -version”,但始终得到IOException

ProcessBuilder pb = new ProcessBuilder("java -version");
        try {
            Map<String, String> map = pb.environment();  
            Process p  = pb.start();

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

抛出的异常如下

java.io.IOException: Cannot run program "java -version": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

我可以确保在环境变量中设置了JAVA_HOME,我的eclipse也指向了jdk。

JAVA_HOME=C:\JDK1.8.0_66-X64.

有谁可以告诉我的代码/设置中的问题是什么?

1 个答案:

答案 0 :(得分:1)

您正在使用的类ProcessBuilder的构造函数采用类型String...的参数。此外,第一个元素必须是操作系统程序的名称。您收到此异常,因为系统找不到名为java -version.exe的文件(如果您在Windows中)。您想要的文件名是java.exe所以请使用ProcessBuilder("java", "-version")。请参阅文档here。文档中有一个很好的例子。