从Node.js/Heroku应用程序在服务器端执行Java程序?

从Node.js/Heroku应用程序在服务器端执行Java程序?,java,node.js,heroku,Java,Node.js,Heroku,我可以从Heroku上的Node.js应用程序调用Java程序吗 我有一个Node.js/Heroku应用程序。但现在需要添加服务器端功能,以便在输入数据文件上运行算法,并将数据输出为JSON格式。我已经有了一个Java库,可以读取文件并运行算法,在纯Node.js中重新编写它对我来说非常困难(最多) 因此,我们可以编写一个命令行程序,它接受一个输入文件并将结果通过管道传输到标准输出,例如 java mytask.class-cp./mylibrary.jar--in/tmp/file.in>o

我可以从Heroku上的Node.js应用程序调用Java程序吗

我有一个Node.js/Heroku应用程序。但现在需要添加服务器端功能,以便在输入数据文件上运行算法,并将数据输出为JSON格式。我已经有了一个Java库,可以读取文件并运行算法,在纯Node.js中重新编写它对我来说非常困难(最多)

因此,我们可以编写一个命令行程序,它接受一个输入文件并将结果通过管道传输到标准输出,例如

java mytask.class-cp./mylibrary.jar--in/tmp/file.in>output.json

可以从Node.js调用Java命令行程序吗?我知道可以将Java应用程序部署到Heroku,但这里我们想从Node.js应用程序中执行一点Java。

您不想特别是
child\u process.exec()

节点通过 子进程模块

可以通过子级的stdin、stdout和 stderr以完全非阻塞的方式


请注意,上面的示例命令不正确,因为您试图通过管道传输到文件(
output.json
)。管道只在进程之间工作。子流程模块将允许您直接读取流程的标准输出,并且您不需要该文件(类似于输入流)

在现有Java代码上添加web服务并从node.jsAha调用该服务可能不那么脆弱,这一点非常好,即使它是native Node.js,也最好将其分离出来。感谢您的快速回复!是的,调用child_process.exec()非常理想,而且直接返回管道更好。我的不确定性在于是否安装了java VM,以及它是否可以运行我提供的类/库?@user645715我还没有检查,但我认为在安装node.js应用程序时不会安装java运行时。你要么让你的java应用程序成为一个独立的可执行程序,用你的应用程序推送java运行时,要么修改并包含java运行时。