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)try
中?或者您是否将其包装在
try
/
catch
中,如果是,是否在
finally
语句中关闭流?否则,结果可能是武断的。您是否也验证了
PATH
变量在您与Java 8一起使用的环境中是否有内容?这是一个try-catch,我没有在finally语句中关闭流。为什么这会导致Java8什么也不给我,而Java7却打印出一条路径?PATH变量没有内容。我打印出ProcessBuilder.environment()并看到正确填充的路径。