我的计划是在Java项目中使用OpenCV,该项目随gradle一起导出到一个大jar中。 gradle导出效果很好。我的问题是将OpenCV集成到我的Java项目中。
我尝试使用以下lib:Github: bytedeco/javacv
build.gradle
dependencies {
// https://mvnrepository.com/artifact/org.bytedeco/opencv-platform
compile group: 'org.bytedeco',name: 'javacv-platform',version: '1.5.3'
}
Main.java
import org.bytedeco.javacpp.Loader;
import org.bytedeco.opencv.opencv_java;
...
public class Main{
static {
Loader.load(opencv_java.class);
}
...
}
现在我遇到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_videoio in java.library.path: [C:\Program Files\Amazon Corretto\jdk11.0.6_10\bin,...]
at java.base/java.lang.ClassLoader.loadlibrary(ClassLoader.java:2660)
at java.base/java.lang.Runtime.loadlibrary0(Runtime.java:829)
at java.base/java.lang.System.loadlibrary(System.java:1870)
at org.bytedeco.javacpp.Loader.loadlibrary(Loader.java:1631)
at org.bytedeco.javacpp.Loader.load(Loader.java:1265)
at org.bytedeco.javacpp.Loader.load(Loader.java:1109)
at org.bytedeco.opencv.global.opencv_videoio.<clinit>(opencv_videoio.java:21)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.bytedeco.javacpp.Loader.load(Loader.java:1176)
at org.bytedeco.javacpp.Loader.load(Loader.java:1125)
at com.package.Main.<clinit>(Main.java:39)
Caused by: java.lang.UnsatisfiedLinkError: C:\Users\User\.javacpp\cache\opencv-4.3.0-1.5.3-windows-x86_64.jar\org\bytedeco\opencv\windows-x86_64\jniopencv_videoio.dll: Can't find dependent libraries
at java.base/java.lang.ClassLoader$Nativelibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$Nativelibrary.load(ClassLoader.java:2430)
at java.base/java.lang.ClassLoader$Nativelibrary.loadlibrary(ClassLoader.java:2487)
at java.base/java.lang.ClassLoader.loadlibrary0(ClassLoader.java:2684)
at java.base/java.lang.ClassLoader.loadlibrary(ClassLoader.java:2617)
at java.base/java.lang.Runtime.load0(Runtime.java:767)
at java.base/java.lang.System.load(System.java:1834)
at org.bytedeco.javacpp.Loader.loadlibrary(Loader.java:1581)
... 8 more
我也尝试过直接加载本机库
import ...
public class Main{
static {
System.load("C:/opencv/build/java/x64/");
}
...
}
但是它也失败了,除了以下例外:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\opencv\build\java\x64: Can't find dependent libraries
at java.base/java.lang.ClassLoader$Nativelibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$Nativelibrary.load(ClassLoader.java:2430)
at java.base/java.lang.ClassLoader$Nativelibrary.loadlibrary(ClassLoader.java:2487)
at java.base/java.lang.ClassLoader.loadlibrary0(ClassLoader.java:2684)
at java.base/java.lang.ClassLoader.loadlibrary(ClassLoader.java:2617)
at java.base/java.lang.Runtime.load0(Runtime.java:767)
at java.base/java.lang.System.load(System.java:1834)
at com.package.Main.<clinit>(Main.java:38)
您有如何解决该问题的提示吗? 预先感谢!