搞了两天了还没搞好这个问题,在测试类main函数里面运行没有任何问题,但是部署到tomcat的web应用的时候就死活加载不了CascadeClassifier,一直卡在这。
Caused by: java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Ljava/lang/String;)J
at org.opencv.objdetect.CascadeClassifier.CascadeClassifier_0(Native Method)
at org.opencv.objdetect.CascadeClassifier.<init>(CascadeClassifier.java:37)
at tool.Utils.FaceCompare.<clinit>(FaceCompare.java:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1224)
... 60 more
加载的代码如下:
一开始怀疑是opencv_java401.dll没有加载到,但使用绝对路径load去读取也没有用(main方法里面有用),网上能查的方法都试过了(把dll文件放到各个文件夹下都没用),有大佬能帮帮我吗
// 初始化人脸探测器
private static CascadeClassifier faceDetector;
static {
System.out.println("路径"+System.getProperty("java.library.path"));
System.load("E:\\opencv\\opencv\\build\\java\\x64\\opencv_java401.dll");
faceDetector = new CascadeClassifier("C:\\Users\\zhyuse\\Desktop\\new\\opencv\\face-detection-master\\resources\\haarcascades\\haarcascade_frontalface_alt.xml");
}