From 185488d9dab73d0bf451268c7a726083c43daa99 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Fri, 5 May 2023 15:32:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AC=A3=E5=BD=B1=E7=AE=A1=E7=90=86=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E8=A3=85=E7=BD=AE=E9=80=9A=E9=81=93=E8=A1=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xymanager_service/interaction/Cma.java | 8 +++-- .../xymanager_service/interaction/CmaDLL.java | 8 +++++ .../interaction/LibLoader.java | 29 +++++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/CmaDLL.java create mode 100644 xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/LibLoader.java diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/Cma.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/Cma.java index 00cca9d..2aeeb27 100644 --- a/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/Cma.java +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/Cma.java @@ -3,8 +3,10 @@ package com.shxy.xymanager_service.interaction; public class Cma { static { - System.setProperty("java.library.path", "./libs"); - System.loadLibrary("xympj"); +// System.setProperty("java.library.path", "./libs"); +// System.loadLibrary("xympj"); +// LibLoader.loadLib("xympj.dll"); + System.load("D:\\Project\\JAVAProject\\XyManagerBackend\\libs\\xympj.dll"); initCmaEnv(); } @@ -23,7 +25,7 @@ public class Cma { } } - private static native boolean initCmaEnv(); + public static native boolean initCmaEnv(); public native long initCma(String server, int port); public native void releaseCma(long cma); diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/CmaDLL.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/CmaDLL.java new file mode 100644 index 0000000..3c22940 --- /dev/null +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/CmaDLL.java @@ -0,0 +1,8 @@ +package com.shxy.xymanager_service.interaction; + +import com.sun.jna.Library; +import com.sun.jna.Native; + +public class CmaDLL implements Library { + CmaDLL INSTANCE = (CmaDLL) Native.loadLibrary("xympj.dll",CmaDLL.class); +} diff --git a/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/LibLoader.java b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/LibLoader.java new file mode 100644 index 0000000..d012984 --- /dev/null +++ b/xymanager_service/src/main/java/com/shxy/xymanager_service/interaction/LibLoader.java @@ -0,0 +1,29 @@ +package com.shxy.xymanager_service.interaction; + +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.InputStream; + +public class LibLoader { + public static void loadLib(String libName) { + String resourcePath = "/" + libName; + String folderName = System.getProperty("java.io.tmpdir") + "/lib/"; + File folder = new File(folderName); + folder.mkdirs(); + File libFile = new File(folder, libName); + if (libFile.exists()) { + System.load(libFile.getAbsolutePath()); + } else { + try { + InputStream in = LibLoader.class.getResourceAsStream(resourcePath); + FileUtils.copyInputStreamToFile(in, libFile); + in.close(); + System.load(libFile.getAbsolutePath()); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Failed to load required lib", e); + } + } + } +} \ No newline at end of file