Общение с встроенным файлом JAR

В 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()? Заранее спасибо!

1 ответ

System.in верна, и ошибка заключалась в том, что я забыл очень легко забываемую деталь:

\n должно быть добавлено в конце каждого переданного сообщения, иначе оно не пройдет. Это все, что есть.

Я хотел бы оставить этот вопрос на случай, если кто-то другой столкнется с той же проблемой. Существует много информации о создании дочернего процесса из Java-программы, но не о создании Java-программы, которая будет действовать как сам дочерний процесс.

licensed under cc by-sa 3.0 with attribution.