В Node.js мне необходимо запустить JAR файл и, следовательно, создать дочерний процесс:
var cp = require('child_process');
var child = cp.spawn('.../java.exe', ['-jar', 'C:/test.jar']);
child.stdout.on('data', function(data) {
console.log(data.toString());
});
child.stderr.on('data', function(data) {
console.log('Error: ' + data.toString());
});
Я пытаюсь использовать child.stdin.write('test test');
отправлять данные дочернему процессу, но здесь, где я застрял - я понятия не имею, как получить эти данные в программе Java.
Я пробовал следующее:
public static void main(String[] args) {
System.out.println("Waiting for input");
Scanner s = new Scanner(System.in);
String resp = s.nextLine();
System.out.println("Input got: " + resp);
}
... а также инициализировать DataInputStream(System.in)
, но, увы, безрезультатно. Я вижу строку "Ожидание ввода" в Node.js, но кажется, что я лаяю неправильное дерево, слушая System.in
.
Как получить вход, который отправляется из Node.js с child.stdin.write()
и child.stdin.end()
? Заранее спасибо!
System.in
верна, и ошибка заключалась в том, что я забыл очень легко забываемую деталь:
\n
должно быть добавлено в конце каждого переданного сообщения, иначе оно не пройдет. Это все, что есть.
Я хотел бы оставить этот вопрос на случай, если кто-то другой столкнется с той же проблемой. Существует много информации о создании дочернего процесса из Java-программы, но не о создании Java-программы, которая будет действовать как сам дочерний процесс.