我是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.
有谁可以告诉我的代码/设置中的问题是什么?
答案 0 :(得分:1)
您正在使用的类ProcessBuilder
的构造函数采用类型String...
的参数。此外,第一个元素必须是操作系统程序的名称。您收到此异常,因为系统找不到名为java -version.exe
的文件(如果您在Windows中)。您想要的文件名是java.exe
所以请使用ProcessBuilder("java", "-version")
。请参阅文档here。文档中有一个很好的例子。