0

I am using opencv for face detection in a java web application.So the image path with imagename is passed to a function of java class named FaceDetection.java . Now when i run it give an exception that :

java.lang.UnsatisfiedLinkError: Native Library C:\Users\admin\.netbeans\7.0\apache-tomcat-7.0.14.0_base\work\Catalina\localhost\SharedCrpto1\loader\com\googlecode\javacv\cpp\windows-x86\jniopencv_objdetect.dll already loaded in another classloader

What can be the reason for it?How to come over it.Please help

Complete StackTrace is as follow :

java.lang.UnsatisfiedLinkError: Native Library C:\Users\admin\.netbeans\7.0\apache-tomcat-7.0.14.0_base\work\Catalina\localhost\SharedCrpto1\loader\com\googlecode\javacv\cpp\windows-x86\jniopencv_objdetect.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1905)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:700)
at com.googlecode.javacpp.Loader.load(Loader.java:586)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.opencv_objdetect.<clinit>(opencv_objdetect.java:91)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.googlecode.javacpp.Loader.load(Loader.java:561)
at com.googlecode.javacpp.Loader.load(Loader.java:540)
at com.googlecode.javacv.cpp.opencv_objdetect$CvHaarClassifierCascade.<clinit>(opencv_objdetect.java:170)
at DetectionAndRecognition.FaceDetection.<clinit>(FaceDetection.java:56)
at org.apache.jsp.uploadwebcamimage_jsp._jspService(uploadwebcamimage_jsp.java:155)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
user3522121
  • 215
  • 3
  • 10
  • 23
  • The same dll library has been already loaded using some other JAR. Try to find out that jar. See this similar problem http://stackoverflow.com/questions/1030792/dll-already-loaded-in-another-classloader – Abdullah Shoaib Apr 21 '14 at 19:09
  • @AbdullahShoaib It says that Put the class in a jar file under /lib/, it will be shared over all wars.But how?Please help,I am not able to solve this problem since a whole day – user3522121 Apr 21 '14 at 19:15
  • @AbdullahShoaib First time when i run the code it runs fine,It creates problem for each next time.But of i restsart my apache server and then run it it again run fine only for first time – user3522121 Apr 21 '14 at 19:17

0 Answers0