From 8e55124158b0c3a4a93485005d1843c813bc4ade Mon Sep 17 00:00:00 2001 From: Andy Yang <10339434@qq.com> Date: Wed, 4 Feb 2026 11:49:37 +0800 Subject: [PATCH] wave2: fix opencv dll load fail from library directory --- .../java/com/zhangy/skyeye/SEApplication.java | 2 +- .../jm/controller/JmImageController.java | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java index 58180b1..87dcf80 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/SEApplication.java @@ -25,7 +25,7 @@ public class SEApplication { System.setProperty("jna.library.path", combinedPath); // 如果 OpenCV 使用的是标准 JNI (System.loadLibrary),可能还需要设置 java.library.path - System.setProperty("java.library.path", opencvPath); + System.setProperty("opencv.library.path", opencvPath); SpringApplication.run(SEApplication.class, args); } } diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmImageController.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmImageController.java index e4c5a05..74ff9d7 100644 --- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmImageController.java +++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmImageController.java @@ -18,6 +18,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.io.File; import java.net.ConnectException; import java.util.Collections; import java.util.UUID; @@ -136,7 +137,22 @@ public class JmImageController { .collect(Collectors.toList()); } static { - System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + //System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + //加载 OpenCV (强制使用绝对路径加载,解决 UnsatisfiedLinkError) + String openCvDll = System.getProperty("opencv.library.path") + File.separator + Core.NATIVE_LIBRARY_NAME + ".dll"; + try { + File dllFile = new File(openCvDll); + if (dllFile.exists()) { + // 注意:必须使用 System.load() 加载绝对路径 + System.load(dllFile.getAbsolutePath()); + System.out.println("SUCCESS: OpenCV loaded from -> " + dllFile.getAbsolutePath()); + } else { + System.err.println("ERROR: OpenCV DLL not found at -> " + openCvDll); + } + } catch (Throwable e) { + System.err.println("CRITICAL: Failed to load OpenCV: " + e.getMessage()); + e.printStackTrace(); + } } /*@IgnoreAuth