gpt4 book ai didi

java - OpenCV 无法为动态 Web 项目加载库

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:56 25 4
gpt4 key购买 nike

我正在准备一个关于人脸识别的 java web 项目。我正在使用 opencv 2.4.7 的 java 库。当我从 servlet 调用 FaceDetector 类时,它给出了错误-

java.lang.UnsatisfiedLinkError: no opencv_java247 in java.library.path java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886) java.lang.Runtime.loadLibrary0(Runtime.java:849) java.lang.System.loadLibrary(System.java:1088) Models.NewFaceDetector.(NewFaceDetector.java:24) Servlets.helloServlet.doPost(helloServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:647) javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

此代码在控制台 java 项目中运行良好。Servlet 代码是-

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out=response.getWriter();
Part name=request.getPart("NameBox");
Part img=request.getPart("Img");
String filename=getFileName(img);
InputStream is=img.getInputStream();
int i=is.available();
byte[] b=new byte[i];
is.read(b);
String path="E:/temp/"+filename;
FileOutputStream os=new FileOutputStream(path);
os.write(b);
os.close();
is.close();
FaceDetector fd=new FaceDetector();
fd.getFaces(path);
}

我的人脸检测器类是-

public class FaceDetector {

static{ System.loadLibrary("opencv_java247"); }
public List<Mat> getFaces(String url) throws MalformedURLException, IOException
{
List<Mat>faces=new ArrayList();
Mat image = Highgui.imread(url);
//code...
}

我给出了打开cv dll的路径- -Djava.library.path="C:\Users\vivek\Documents\NetBeansProjects\TrendFaceRecognizer\src\java\data"

我不知道我在做什么错。

最佳答案

如何解决 java.lang.UnsatisfiedLinkError
用户应该检查是否-

  • System.loadLibrary 传递了一个不正确的参数:

    • Windows:要加载 Name.dll,会将 Name 传递给 loadLibrary 方法。

      AIX、HP-UX、Solaris、Linux:加载libName.so或libName.a,传递libName
      到 loadLibrary 方法

  • native 库已经加载-

    如果 native 库已经被应用程序加载并且相同
    应用程序尝试再次加载它,这可能会导致此错误。

  • native 库不存在于 java.library.path 或
    LD_LIBRARY_PATH

引用:Debugging java.lang.UnsatisfiedLinkError

在你的情况下,1)检查你的servlet(可能在不同的包中)是否可以访问\TrendFaceRecognizer\src\java\data中的dll

2) 而不是 System.loadLibrary("opencv_java247") 尝试使用 System.load("opencv_java247") 。似乎 loadLibrary 使用默认路径,加载将使用绝对路径

关于java - OpenCV 无法为动态 Web 项目加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20853509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com