当我尝试运行任何Runtime.exec()命令时,像这样简单的命令来打印java版本:
String [] cmd = { "java", "-version" };
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmd);
BufferedReader stdError = new BufferedReader( new InputStreamReader( process.getErrorStream() ) );
String s = null;
while ( ( s = stdError.readLine() ) != null )
System.out.println(s);
它工作正常,但如果我使用与我的Java应用程序捆绑在一起的JRE,我总是会收到错误,说java是未知的:
java.io.IOException: Cannot run program "java": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at org.runner.Runner.main(Runner.java:11)
为什么在使用捆绑的JRE时会发生这种情况?