搜索
写经验 领红包
 > 生活

odejs调用java返回对象(odejs调用java方法)

导语:NodeJS 调用Java

NodeJs调用Java的原理:

nodejs-java运行原理:使用c++通过jvmti JNI去调用java的类,nodejs再调用c++,用c++做中转实现的一个功能。JNI 是java本地开发接口,JNI 是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++),通过这个协议,java代码就可以调用外部的c/c++代码,外部的c/c++代码也可以调用java代码,Android系统源码中随处可见JNI的使用”

NodeJs调用Java注意事项:

1)使用cnpm减少安全的信息

2)使用JDK1.8,并且避免32位的JDK报错

详细代码:

index.js内容:

var java = require (&39;);var fs = require(&34;);var list = java.newInstanceSync(&34;);list.add(&34;);list.add(&34;);console.log(list.sizeSync());console.log(list.toStringSync());

paskage.json

{  &34;: &34;,  &34;: &34;,  &34;: &34;,  &34;: &34;,  &34;: {    &34;: &34;Error: no test specified\&34;  },  &34;: &34;,  &34;: &34;,  &34;: {    &34;: &34;,    &34;: &34;  }}

Java依赖管理:
&34;;var fs = require(&34;);var java = require(&34;);var baseDir = &34;;var dependencies = fs.readdirSync(baseDir);?dependencies.forEach(function(dependency){java.classpath.push(baseDir + &34; + dependency);})?java.classpath.push(&34;);java.classpath.push(&34;);?exports.getJavaInstance = function() {return java;}var java = require(&34;);java.classpath.push(&34;);java.classpath.push(&34;);var list1 = java.newInstanceSync(&34;);console.log(list1.sizeSync()); // 0list1.addSync(‘item1‘);console.log(list1.sizeSync()); // 1java.newInstance(&34;, function(err, list2) {list2.addSync(&34;);list2.addSync(&34;);console.log(list2.toStringSync()); // [item1, item2]});var ArrayList = java.import(‘java.util.ArrayList‘);var list3 = new ArrayList();list3.addSync(‘item1‘);list3.equalsSync(list1); // true

执行结果

本文内容由小里整理编辑!