我在同一个文件夹(.class和.java和.js)中有一个node.js脚本和一个java程序。我想从node.js脚本调用java程序。在终端我可以像这样调用java程序
java -cp java-json.jar:. PlutoMake "tests/android.png"
我看到了这个帖子How to call Java program from NodeJs
我正在尝试做同样的事情,这里是node.js代码
var child = spawn('java', ['-cp java-json.jar:. PlutoMake', 'tests/android.png']);
这似乎没有崩溃,但没有任何反应。 java程序创建一个图像,但如果我通过节点执行它,它就不起作用。有谁知道什么是错的?
由于
答案 0 :(得分:6)
您传递的参数数组应该每个参数有一个元素。你错误地将它们中的一些组合在一起。
var child = spawn('java', ['-cp', 'java-json.jar:.', 'PlutoMake', 'tests/android.png']);
检查输出和退出代码可能很有用:
child.on('close', function (exitCode) {
if (exitCode !== 0) {
console.error('Something went wrong!');
}
});
// If you’re really just passing it through, though, pass {stdio: 'inherit'}
// to child_process.spawn instead.
child.stderr.on('data', function (data) {
process.stderr.write(data);
});
答案 1 :(得分:0)
您可以使用模块node-java-caller简单地调用带有类路径和参数的java命令,它嵌入对spawn的调用,并且如果系统中不存在Java,则会自动安装它