nodejs调用jar
2022/1/23 20:06:00
本文主要是介绍nodejs调用jar,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目前nodejs调用jar主要有两种方式:
- 通过创建子进程运行java -jar命令调用包含main方法的jar
- 使用node-java通过c++桥接调用jar
方法一(子进程运行):
const { spawn } = require('child_process'); const child = spawn('java', ['-jar', `${__dirname}/Main.jar`]); child.stdout.on('data', (data) => { console.log(`child stdout: ${data}`) }); child.stderr.on('data', (data) => { console.error(`stderror ${data}`); }); child.on('exit', function(code, signal){ console.log('child process exited with' + `code ${code} and signal ${signal}`); });
在makefile文件目录下执行make打包Main.jar
. ├── Main.java ├── makefile └── manifest.txt
makefile
JFLAGS = -g JC = javac JAR = jar JARFLAGS = cvfe .SUFFIXES: .java .class .jar .java.class: $(JC) $(JFLAGS) $*.java .class.jar: $(JAR) $(JARFLAGS) Main.jar Main *.class CLASSES = \ Main.java default: jar classes: $(CLASSES:.java=.class) jar: $(CLASSES:.java=.jar) clean: $(RM) *.class $(RM) *.jar%
manifest.txt
Main-Class: Main%
Main.java
package com.lablelan; public class Hello { public static void main(String[] args) { System.out.println("hello world"); } }
输出结果:
child stdout: hello world child process exited withcode 0 and signal null
方法二(通过c++桥接):
var java = require('java'); var javaLangSystem = java.import('java.lang.System'); var num = java.newLong(100); // 函数以Sync结尾会运行在v8主线程 javaLangSystem.out.printlnSync('Hello World'); // 函数不带Sync将会运行在v8的非主线程的工作线程 num.toString((err, data)=>{ console.log("data: ", data) }) // process.exit(0);
安装环境
# 注意这里需要有java8环境,如果报错找不到./build/jvm_dll_path.json可以执行node_modules/java/postInstall.js生成 # 出现安装问题可以参考 https://github.com/joeferner/node-java npm install -g node-gyp npm install java
输出结果
Hello World data: 100
这篇关于nodejs调用jar的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15useCallback教程:React Hook入门与实践
- 2024-11-15React中使用useContext开发:初学者指南
- 2024-11-15拖拽排序js案例详解:新手入门教程
- 2024-11-15React中的自定义Hooks案例详解
- 2024-11-14受控组件项目实战:从零开始打造你的第一个React项目
- 2024-11-14React中useEffect开发入门教程
- 2024-11-14React中的useMemo教程:从入门到实践
- 2024-11-14useReducer开发入门教程:轻松掌握React中的useReducer
- 2024-11-14useRef开发入门教程:轻松掌握React中的useRef用法
- 2024-11-14useState开发:React中的状态管理入门教程