在某些情況下,存在electron需要調用java的class,或者調用jar包,因此需要引用node-java
一、集成前提
1)electron需要6.0.0版本,7.0.0經反覆測試無法編譯通過,或者提示node的版本不一致等等問題
2)安裝electron-rebuild,以便編譯node-java
3)node版本12.8.1,npm版本6.10.2
4)全局安裝node-gyp 和 Windows-Build-Tools
二、安裝node-java
npm i java --save-dev
三、編譯node-java
.\\node_modules\\.bin\\electron-rebuild.cmd
注:electron-rebuild.cmd是windows下的命令,其他操作系統去掉 .cmd
四、配置node-java
編譯後,在.\\node_modules\\java\\build目錄下會存在 jvm_dll_path.json 文件,其內容為
";E:\\\\Java\\\\jdk1.8.0_162\\\\jre\\\\bin\\\\server"
此內容為jvm.dll文件的路徑,配置為你java環境下的jvm.dll的路徑即可
如果不存在 jvm_dll_path.json 文件,則請手工創建
五、使用node-java
按照node-java的幫助使用如下代碼即可
<code>java = require('java');
//調用靜態方法
let timeMillis = java.callStaticMethodSync("java.lang.System", "currentTimeMillis");
this.currentTimestamp = timeMillis.longValue;/<code>
但是,使用electron-builder打包後,發現運行不起,原因是打包後,java相關文件被打包到app.asar,因此無法正確加載java,需要做如下修改
1)package.json修改
在build裡添加asarUnpack,即不將java相關的文件打包到app.asar裡
修改後打包結果為:目錄中多了app.asar.unpacked
2)加載打包後的java
在代碼中區分打包 或 未打包 加載java
<code>let java;
if (app.isPackaged) {
let javaPath = path.resolve('./') + '/resources/app.asar.unpacked/node_modules/java';
java = require(javaPath);
} else {
java = require('java');
}/<code>
閱讀更多 IT技術幫 的文章