2015-08-16 40 views
1

我在同一个文件夹(.class和.java和.js)中有一个node.js脚本和一个java程序。我想从node.js脚本调用java程序。在终端,我可以这样调用如何从node.js调用java程序?

java -cp java-json.jar:. PlutoMake "tests/android.png"

我看到这个线程How to call Java program from NodeJs

,我试图做同样的事情的java程序,这里是Node.js的代码

var child = spawn('java', ['-cp java-json.jar:. PlutoMake', 'tests/android.png']); 

这似乎运行没有崩溃,但然后没有任何反应。 java程序创建一个图像,但是如果我通过节点来完成,它不起作用。有谁知道最新错误?

谢谢

回答

5

您传递的参数数组应该每个参数有一个元素。你错误地结合了其中的一些。

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); 
}); 
+0

这工作,谢谢,但我现在怎么可以设置当Java脚本退出或结束运行的事件? – sneaky

+0

@sneaky:我编辑了关于检查退出代码是否有错误的答案,但这也是您用来继续的事件(在确认退出代码*为* 0之后)。 – Ryan

+0

在java中,我知道我可以像'system.exit(0)'那样做,我认为这触发了上面的第一个函数。哪一个在java完成执行时触发(没有调用exit并且没有抛出异常)?而且上面的第二个函数如何被触发? – sneaky