node.js通过node-java库调用java接口(jar包)

这篇具有很好参考价值的文章主要介绍了node.js通过node-java库调用java接口(jar包)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、业务需要

最近因项目需求,需要调用第三方java的打的jar包,但项目后端是用node.js写的,因此需要用node.js调用第三方jar,网上搜集资料,发现有一个库,node-java,可以通过js的方式调用java语言的包,以及包中的方法,因此整理了一下,以防时间长忘记,具体如下:

2、开发环境

  • jdk 1.8 并配置java_home、path
  • node.js12.13.1

有了上面的环境准备,接着就可以安装node-java依赖了。

 npm install java --save
这一步会进行源码编译,所以会自动运行node-gyp,接着利用系统中的msbuild进行源码编译。没有报错就安装成功了。如果编译安装java依赖失败,回头检查msbuild,jdk安装情况。

3、调用java包简单实例

const java = require("java")
var javaLangSystem = java.import("java.lang.System")
javaLangSystem.out.printlnSync("hello") //hello
var list1 = java.newInstanceSync("java.util.ArrayList")
list1.addSync("a")
list1.addSync("b")
console.log(list1.toStringSync()) //[a,b]
console.log(list1.sizeSync())//2
console.log(list1.getSync(1))//b
 
var ArrayList = java.import("java.util.ArrayList")
var list2 = new ArrayList()
list2.addSync("a")
list2.addSync("b")
console.log(list2.toStringSync()) //[a,b]
console.log(list2.sizeSync())//2
console.log(list2.getSync(1))//b

运行程序,打印信息如下:
node.js通过node-java库调用java接口(jar包),java,java,node.js,jar
以上示例演示了js调用java原生的方法,很多方法在调用的时候,与java有一些区别,方法后面都带着Sync后缀,表示同步方法,也好理解,node很多操作都是异步的,要想直接得到结果,就需要调用同步方法,就好比在进行文件操作那样:fs.readSync(),fs.mkdirSync() 。

4、调用自定的jar包接口

准备一个Test.java

package com.xxx;
public class Test{
    public static String hello(String name){
        return "hi,"+name;
    }
}

编译,打jar包。
然后将jar包放到jdk的环境的java_home的jre\libe\ext文件下,相当于把自己打的jar包放到java开放环境中去,在调用的时候引jar包时候,引入jar路径就可以不用在写了,我本地路径是:

C:\Program Files\Java\jdk1.8.0_191\jre\lib\ext

然后,运用node.js调用

调用方法:

const java = require("java") //应用java模块
java.classpath.push(".")  //jar包路径(如果jar包放在了jre\lib\ext文件下,用'.'表示就可以了,或者写jar包的绝对路径)

方法一:
var Test = java.import("com.xxx.Test")  //引入包路径
var res = Test.helloSync("buejee")      //调用jar中的方法,传入参数

方法二:
let res = java.callStaticMethodSync("com.xxx.Test","hello","buejee");
//第一个参数包路径,第二个参数方法名,第三个参数是传入接口参数

console.log(res)

运行结果如下:
node.js通过node-java库调用java接口(jar包),java,java,node.js,jar
至此,js调用java示例介绍完了,其实没尝试的时候,觉着可能有一些神秘,但是当我们了解了之后,发现,就是一个混合调用的过程,需要我们熟悉java语言,也要熟悉javascript,这种调用没有太大的意义,因为很多事情java可以做,node同样可以做,而且这种调用环境非常复杂,不仅需要jdk,还需要msbuild,就是c源码编译,对机器环境要求较高。

注意:引入jar包路径时候,不要用相对路径,我尝试用相对路径引用的没有成功,具体原因可能是下面调用包的路径,不支持用相对路径。可以将jar包方到<java_home>\jre\lib\ext下面或者用绝对路径文章来源地址https://www.toymoban.com/news/detail-522078.html

到了这里,关于node.js通过node-java库调用java接口(jar包)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • node.js调用C++的一种方案

    nodejs官方维护了一套ABI(应用二进制接口),用于完成nodejs和C++的通信。 官网介绍的Node-API是C API,对应的node-addon-api是它的C++版本,更容易使用,本文介绍的也是这个C++的版本。 通过一个示例来说明如何使用node-addon-api 1、初始化一个空项目(生成package.json文件) npm init 2、

    2024年02月03日
    浏览(42)
  • 使用Node.js创建接口

    当使用Node.js创建接口时,有两种主要方式:使用Express框架和使用Node.js的HTTP模块。 Express框架方式: 总的来说,使用Express框架可以更快速地搭建和管理接口,而使用Node.js的HTTP模块则提供了更多底层控制和灵活性,适用于对请求和响应处理有更高要求的情况。 便捷性和简洁

    2024年02月04日
    浏览(58)
  • Java反射调用jar包实现多态

    上一篇实现了反射调用jar包,但是没有实现多态,这次先给自己的jar包类抽象一个接口,然后实现类实现接口。最后调用放反射得到的对像转换成接口类型调用执行。 定义接口,指定包为ZLZJar 实现接口方法 生成jar包 生成jar包指定id和版本,引用要一致 把jar包拷贝到调用方工

    2024年02月07日
    浏览(39)
  • Node.js躬行记(27)——接口管理

    在页面发生线上问题时,你要做的事情就是去查接口,响应数据是否正确,查接口的方法有两种: 第一种是在浏览器中打开地址,但是你必须得知道详细的 URL,并且有些页面还需要附带参数。 第二种是打开编辑器,启动本地项目,然后查看访问的接口,或者直接搜索代码,

    2023年04月24日
    浏览(36)
  • 【佳学基因检测】Node.js中如何读取并调用内容

    这段代码是一个简单的Node.js服务器,它当接收到HTTP请求时,会读取并返回一个叫做’jiaxuejiyin.html’的文件。以下是对这段代码的逐句解释: var http = require(\\\'http\\\'); 使用Node.js的 require 方法导入HTTP模块,并将其存储在变量 http 中。HTTP模块允许Node.js通过Internet上的Hyper Text Trans

    2024年02月05日
    浏览(84)
  • WebSocket简述及通过node.js的基本实现

    WebSocket是自Html5开始在单个TCP连接上进行全双工通信 1 的协议,它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

    2024年02月09日
    浏览(37)
  • C#通过请求url调用接口返回数据

     方法描述:通过请求url,调用对方系统的接口,拿到数据并返回; 方法参数:访问系统的url地址 url请求参数:searchDate(当前请求的年月:2023-7),需进行url编码

    2024年02月15日
    浏览(50)
  • Unity 调用Java | 调用aar包 | 调用jar包 | Java内部类,附带实例,看我一篇就够啦~

    🚀 你生命的前半辈子或许属于别人,活在别人的认为里。 🌞  那便把后半辈子还给你自己,去追随你内在的声音。 请热爱生活,更热爱自己,不要在弥留之际才后悔,这一生过的是那样无趣。 在Assets目录下,如果没有Plugins目录,请 自行创建 ; 该目录是Unity 特殊文件夹之

    2023年04月13日
    浏览(45)
  • 解决多模块内核心模块有接口打包成jar后被依赖并调用遇到的问题(springcloud集成ruoyi.quartz)

    项目准备开发个新功能,刚好很喜欢ruoyi写的任务调度,因此想到了集成ruoyi.quartz模块 ,遇到了很多问题: 首先因为 ruoyi.quartz模块依赖了ruoyi.common模块,因此第一步我需要把common模块一部分依赖项复制到了quartz模块内(复制的内容就是common文件夹内的,未用到的部门被我剔除

    2024年02月12日
    浏览(47)
  • 【node写接口】 通过node 快速搭建一个服务器、get请求、post请求 小白入门

    从 前后端分离开始,接口大多由后端开发,前端负责请求接口将数据渲染到页面,某些时候需要自己搭建一台服务器用于一些文件图片请求或者进行后端相关知识的学习。 node写接口篇 主要学习前端如何用node写接口 ,一边学习 一遍记录。赶紧卷起来 今天,学习使用node搭建

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包