From 52677f84dc3c4392ab94b2da93c3d2adeccb17a1 Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Mon, 27 Apr 2026 15:32:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(utils):=20=E4=BF=AE=E5=A4=8DJNA?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E5=8A=A8=E6=80=81=E5=BA=93=E7=9A=84=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=92=8C=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除硬编码的文件后缀名,根据操作系统自动识别.dll或.so文件 - 修正Linux系统下的库文件命名规则,移除多余的"_dll"后缀 - 添加对文件扩展名的条件判断,在Windows下确保.dll后缀 - 添加动态库加载成功后的路径打印功能 --- .../njcn/advance/utils/JnaCallDllOrSo.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java index 7d4fd7950..56677c852 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java @@ -20,21 +20,20 @@ public class JnaCallDllOrSo { public JnaCallDllOrSo(String name) { super(); - String suffix = ".dll"; try { String os = System.getProperty("os.name"); - // windows操作系统为1 否则为0 int beginIndex = os != null && os.startsWith("Windows") ? 1 : 0; String nameDll; if (beginIndex == 0) { - //linux操作系统 - nameDll = "lib" + name + "_dll"; - suffix = ".so"; + nameDll = "lib" + name + ".so"; } else { nameDll = name; + if (!name.endsWith(".dll")) { + nameDll = name + ".dll"; + } } - String tem = "/usr/local/dllFile/"+ nameDll.concat(suffix); + String tem = "/usr/local/dllFile/"+ nameDll; File dockerFile = new File(tem); if(!dockerFile.exists()){ boolean f = dockerFile.getParentFile().mkdirs(); @@ -42,7 +41,11 @@ public class JnaCallDllOrSo { System.out.println("文件夹创建:"+f); System.out.println("文件创建:"+d); - try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(nameDll.concat(suffix))) { + try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream(nameDll)) { + if (inputStream == null) { + log.error("找不到资源文件: {}", nameDll); + throw new FileNotFoundException("找不到资源文件: " + nameDll); + } try (FileOutputStream outputStream = new FileOutputStream(dockerFile)) { byte[] buffer = new byte[1024]; int bytesRead; @@ -53,9 +56,11 @@ public class JnaCallDllOrSo { } } this.path = dockerFile.getAbsolutePath(); + System.out.println("动态库路径: " + this.path); } catch (Exception e) { log.error("调用高级算法文件异常,异常信息如下:"); - log.error(e.getMessage()); + log.error(e.getMessage(), e); + throw new RuntimeException("加载动态库失败: " + e.getMessage(), e); } From 39ae7412a82c1cebb2409975076b9f85130dae8f Mon Sep 17 00:00:00 2001 From: xy <748613696@qq.com> Date: Mon, 27 Apr 2026 15:33:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/njcn/advance/utils/JnaCallDllOrSo.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java index 56677c852..c6de931f5 100644 --- a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/utils/JnaCallDllOrSo.java @@ -1,11 +1,11 @@ package com.njcn.advance.utils; -import cn.hutool.core.io.resource.ClassPathResource; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import java.io.*; -import java.net.URLDecoder; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.InputStream; /** * pqs