有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript通过NodeJS运行Java函数

我有一个表单数据发送字符串和整数到我的Express服务器,我需要使用我的Java后端进行计算并响应到前端,我可以直接从Express服务器执行此操作,还是需要涉及其他步骤


共 (2) 个答案

  1. # 1 楼答案

    您可以从nodejs执行java命令。您可以通过expressjs路由器运行exec命令。对于最佳情况,我将使用Java创建另一个API,并向该端点(微服务)发出请求。但是如果你不想这样做,你可以试试这个代码示例

    const express = require('express')
    const app = express()
    const port = 3000
    const exec = require('child_process').exec
    app.get('/', (req, res) => {
      const child = exec('/usr/bin/java ~/example.jar', => (error, stdout, stderr) {
        if (err) {
            console.error(err);
            res.json({error: err, status: 500, errorOutput: stderr})
            return
        }
        // it is important to have json structure in your output or you need to create a logic which parse the output
        res.json(stdout)
      })
    })
    
    app.listen(port, () => console.log(`Example app listening on port ${port}!`)) 
    
  2. # 2 楼答案

    您可以使用Node。js'exec'调用外部Java程序,如下所示:

    Javascript程序

    const exec = require('child_process').exec;
    
    // Number 7 is a command line argument to pass to the Java program
    exec('java MyJavaApplication 7', function callback(error, stdout, stderr){
        console.log(stdout);
    });
    

    Java程序

    public class MyJavaApplication {
        public static void main(String[] args) {
            int input = Integer.parseInt(args[0]);
            int output = calculate(input);
            System.out.println(Integer.toString(output));
        }
    
        private static int calculate(int input) {
            // Do some complex calculation
            return input * input;
        }
    }
    

    在节点上。您可以捕获Java程序写入标准输出的任何内容。 根据您希望将Java文件名作为复杂输入的方式而定。例如,该文件可以具有JSON格式的输入内容