java - 如何在 node.js express 应用程序中运行 java 代码
问题描述
我一直在使用 node.js 进行开发。有一种情况,我需要执行用 Java 编写的程序。一个具有主要功能的简单类。顺便说一下,我有 .java 文件。所以我需要从 Node.js 应用程序中调用一个 java 程序,以便程序启动并进行一些计算,然后将其打印在屏幕上。我需要一些 node.js 变量中的处理值,以便我可以在我的 node.js express 应用程序中使用它。
我已经看到了一些建议子进程、spawn 和 exec 等的解决方案。但是我已经尝试了所有这些并且得到了错误。有时 ENONET 错误有时缓冲区错误。可能是因为我在使用 Ubuntu 操作系统时给出了针对 Windows 平台的答案。我的 Main.java 文件位于 node.js 程序的父目录中。需要您的宝贵支持。
解决方案
论坛上提供了不同的答案,但是,我提供了运行 java 程序所涉及的步骤的分解。 步骤 1. 从 yourCode.java 创建 .jar 文件。(需要在您的系统上安装 Java 开发工具包)。该过程在链接中解释了https://www.tecmint.com/create-and-execute-jar-file-in-linux/
完成后,将您的 .jar 文件放在 node.js 应用程序的父目录中并使用以下代码。它是一个完整的功能,可以从 express 应用程序中调用。
const executeJava = () => {
return new Promise((resolve, reject) => {
const child = exec('java -jar main.jar', function (error, stdout, stderr) {
console.log('Value at stdout is: ' + stdout); // here you get your result. In my case I did'nt needed to pass arguments to java program.
resolve(stdout);
if (error !== null) {
console.log('exec error: ' + error);
reject(error);
}
});
})
}
// you can call this function from your node.js express app using
// const myResult = await executeJava();
推荐阅读
- linux-kernel - linux 中的 scsi 通用 (sg) 驱动程序如何选择要使用的低级驱动程序(sd 或 sr)
- javascript - 革命滑块WordPress中的进度条
- java - JavaFX - 如何为选项卡内的文本字段设置值?
- firefox - 如何替换 Element 原型方法?
- react-native - react-native-init 和 create-react-native-app 之间的区别
- javascript - 使用 c3 创建多个图表
- c# - 错误:无法检索请求的 URL Appium
- javascript - 删除字母间距后仅打印输入字段的 6 个字符
- amazon-web-services - AWS EC2 目标跟踪扩展策略 - 扩展多个实例
- authentication - "detail": "未提供身份验证凭据。"