Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用ProcessBuilder运行docker会导致挂起?_Java_Process_Docker - Fatal编程技术网

Java 为什么使用ProcessBuilder运行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

我正在尝试使用Java语言在docker容器中运行命令。但是,它在等待退出代码时挂起。为什么呢

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退出代码退出。