与嵌入式JAR文件通信

时间:2014-07-01 14:16:57

标签: java node.js ipc

在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),但无济于事。我看到了#34;等待输入"在Node.js中,但似乎我通过听System.in来咆哮错误的树。

如何通过child.stdin.write()child.stdin.end()获取从Node.js发送的输入?提前谢谢!

1 个答案:

答案 0 :(得分:0)

System.in是正确的,错误是我忽略了一个非常容易忘记的细节:

必须在每个传递的消息的末尾添加

\n ,否则它不会通过。这就是它的全部内容。


我想保留这个问题以防其他人遇到同样的问题。有很多关于从Java程序创建子进程的信息,但不是关于创建一个将充当子进程本身的Java程序。