Java 为什么使用ProcessBuilder运行docker会导致挂起?
我正在尝试使用Java语言在docker容器中运行命令。但是,它在等待退出代码时挂起。为什么呢Java 为什么使用ProcessBuilder运行docker会导致挂起?,java,process,docker,Java,Process,Docker,我正在尝试使用Java语言在docker容器中运行命令。但是,它在等待退出代码时挂起。为什么呢 ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList("/usr/bin/docker", "run", "base", "echo", "hello")); Process process = processBuilder.start(); // ... Spin off another thread to collec
ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList("/usr/bin/docker", "run", "base", "echo", "hello"));
Process process = processBuilder.start();
// ... Spin off another thread to collect stdout and stderr
int exitCode = process.waitFor(); // <-- HANG
ProcessBuilder ProcessBuilder=newprocessbuilder(Arrays.asList(“/usr/bin/docker”、“run”、“base”、“echo”、“hello”);
Process=processBuilder.start();
// ... 剥离另一个线程以收集stdout和stderr
int exitCode=process.waitFor();// 为什么要使用CLI
,它只是一个包装器?最好直接从中使用它。一个可能的问题:您似乎没有吞食进程的InputStream和ErrorStreams。您可能会超出这些流的可用缓冲区。欲了解更多信息,请阅读。阅读所有内容,因为它们都很重要。@Hovercraft,我启动另一个线程来吞食它们。我在没有docker的情况下运行了echo hello
命令,测试了我的代码。当您从命令行运行/usr/bin/docker run base echo hello
时会发生什么?它退出了吗?@StephenC,是的,它以0退出代码退出。