【问题标题】:Communicate with Embedded JAR File与嵌入式 JAR 文件通信
【发布时间】:2014-07-01 14:16:56
【问题描述】:

在 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 来找错树了。

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

【问题讨论】:

    标签: java node.js ipc


    【解决方案1】:

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

    \n 必须添加在每条传递的消息的末尾,否则它不会通过。仅此而已。


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

    【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2010-10-23
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多