java - 如何使用 node-java 模块在 .js 文件中导入自己的 java 类?
问题描述
我安装了 node-java 模块(https://github.com/joeferner/node-java)。
我在同一个文件夹下有两个名为“代码”的文件,一个是 test.js,它具有以下代码:
let java= require('java');
let mySumTest= java.import('MySumClass');
console.log(mySumTest.sum(2, 5));
另一个文件是 MySumClass.java:
public class MySumClass{
public static int sum(int a, int b){
return a+b;
}
}
但是当我尝试运行 test.js 文件(./Code> node test.js)时,node.js 命令提示符显示:
Error: Could not create class MySumClass
java.lang.NoClassDefFoundError: MySumClass
Caused by: java.lang.ClassNotFoundException: MySumClass
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
我可能误解了如何使用 node-java 模块的导入功能。任何帮助,将不胜感激!
解决方案
经过大量尝试,这对我有用:(test.jar 与其他文件位于同一目录中)
let java= require('java');
java.classpath.push('test.jar');
let mySumTest= java.import("MySumClass");
/*
//this prints out undefined, don't know why
console.log(java.callStaticMethod("MySumClass", "sum", 2, 5, function(err, results){
if(err){
console.error(err);
return;
}
else return results;
}));
*/
var result= java.callStaticMethodSync("MySumClass", "sum", 2, 5)
console.log(result)
推荐阅读
- c# - 创建新的 Azure 资源组项目时出错
- javascript - Discord.js !kick 命令说访问被拒绝,尽管我有这个角色
- reactjs - 使用未定义的属性“参数”反应 js 错误
- powershell - 将 System.Drawing.KnownColor 转换为 ARGB
- python - (Python Selenium)我如何等到元素类发生变化然后做某事?
- python - 如何设置 neovim 运行 qt-console
- sql - SSAS 多维数据集日期时间列转换为毫秒
- sql - How to group on labels in aggregate query to Promscale
- java - SWIG Java 包装扩展接口的 C++ 接口
- android-studio - java.lang.NoClassDefFoundError: androidx/sqlite/db/SupportSQLiteQuery 在昨天工作的单元测试中