Java7/Java8的区别:进程执行和路径
我已将以下代码添加到我的应用程序中:Java7/Java8的区别:进程执行和路径,java,java-8,Java,Java 8,我已将以下代码添加到我的应用程序中: Runtime rt = Runtime.getRuntime(); String[] commands = {"bash","-c","echo $PATH"}; Process process = rt.exec(commands); 当我打印使用Java7运行的结果时,我得到了我期望的路径。但是,Java8不返回任何内容 Java8中是否有影响流程或环境变量的更改 以下是我打印结果的方式: BufferedReader stdInput = new
Runtime rt = Runtime.getRuntime();
String[] commands = {"bash","-c","echo $PATH"};
Process process = rt.exec(commands);
当我打印使用Java7运行的结果时,我得到了我期望的路径。但是,Java8不返回任何内容
Java8中是否有影响流程或环境变量的更改
以下是我打印结果的方式:
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(process.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
对我来说似乎在Java8中工作。你能发布你用来从
过程中打印输入流的代码吗?我在这两个方面都得到了相同的结果,而且我在变更日志中也没有看到任何关于这方面的变化。还可以尝试直接使用输入流:for(int i=process.getInputStream().read();i!=-1;i=process.getInputStream().read())System.out.write(i)现在是21世纪。使用java.lang.ProcessBuilder而不是Runtime.getRuntime()。您是否将其包装在带有参考资料的try
中?或者您是否将其包装在try
/catch
中,如果是,是否在finally
语句中关闭流?否则,结果可能是武断的。您是否也验证了PATH
变量在您与Java 8一起使用的环境中是否有内容?这是一个try-catch,我没有在finally语句中关闭流。为什么这会导致Java8什么也不给我,而Java7却打印出一条路径?PATH变量没有内容。我打印出ProcessBuilder.environment()并看到正确填充的路径。