操作系统。Linux(java程序在docker容器中运行)
Java版本:1.8
Node version: 10.22.1
我试图用java ProcessBuilder类从一个可执行的js文件中创建一个进程,如下所示。
String command = "/node/app/bin/app.js"
final ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
OutputStream out = process.getOutputStream();
out.write("\n[:--:]".getBytes());
out.flush();// this line throws the error java.io.IOException: Stream closed
运行pb.start()
后,进程被成功创建,下面是调试信息。
问题出在out.flush()
命令的执行上,它抛出了一个异常。以下是执行错误。
Caused by: java.io.IOException: Stream closed
at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433) ~[?:1.8.0_292]
at java.io.OutputStream.write(OutputStream.java:116) ~[?:1.8.0_292]
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) ~[?:1.8.0_292]
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) ~[?:1.8.0_292]
The /node/app/bin/app.js
content is like below:
#!/usr/bin/env node
var path = require('path');
var apJsFile = path.resolve(__dirname, '../app.js'); //app.js is working correctly
require(appJsFile);