首页 > 解决方案 > 如何在 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 程序的父目录中。需要您的宝贵支持。

标签: javanode.jsexpresses6-promisespawn

解决方案


论坛上提供了不同的答案,但是,我提供了运行 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();

推荐阅读