UnsatisfiedLinkError в Java - PullRequest
       10

UnsatisfiedLinkError в Java

0 голосов
/ 06 декабря 2010

После ошибки я получил в своем заявлении. Я не могу понять, что это такое и каково решение? Пожалуйста, ведите меня

   java.lang.UnsatisfiedLinkError: no otfxjni in java.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at com.digitalpersona.onetouch.jni.FeatureExtractionLibrary.<clinit>(FeatureExtractionLibrary.java:16)
        at com.digitalpersona.onetouch.jni.FeatureExtractor.<clinit>(FeatureExtractor.java:8)
        at com.digitalpersona.onetouch.processing._impl.DPFPFeatureExtractionFactoryImpl$FeatureExtractionImpl.<init>(DPFPFeatureExtractionFactoryImpl.java:32)
        at com.digitalpersona.onetouch.processing._impl.DPFPFeatureExtractionFactoryImpl.createFeatureExtraction(DPFPFeatureExtractionFactoryImpl.java:19)
        at VarifyServer.extractFeatures(VarifyServer.java:121)
        at VarifyServer.callClient(VarifyServer.java:71)
        at Bean.callServer(Bean.java:30)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
        at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:88)
        at javax.faces.event.ActionEvent.processListener(ActionEvent.java:77)
        at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:743)
        at javax.faces.component.UICommand.broadcast(UICommand.java:368)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:17)
        at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:94)
        at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:54)
        at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:26)
        at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
        at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet.service(MainSessionBoundServlet.java:160)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$1.service(SessionDispatcher.java:38)
        at com.icesoft.faces.webapp.http.servlet.ThreadBlockingAdaptingServlet.service(ThreadBlockingAdaptingServlet.java:19)
        at com.icesoft.faces.webapp.http.servlet.EnvironmentAdaptingServlet.service(EnvironmentAdaptingServlet.java:63)
        at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:55)
        at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:19)
        at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
        at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:91)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Это означает, что JVM не может найти библиотеку "otfxjni". Вам следует проверить, есть ли у вас эта библиотека и находится ли она в нужном месте (что, конечно, зависит от ОС).

РЕДАКТИРОВАТЬ: Это поможет, если вы распечатаете значение системной переменной java.library.path, чтобы вы знали, где она ищет.

1 голос
/ 06 декабря 2010

Ваш класс com.digitalpersona.onetouch.jni.FeatureExtractionLibrary использует JNI для вызова собственной библиотеки otfxjni (расширение .so или .dll). Однако эта библиотека не находится в пути к вашей библиотеке.

Вы можете установить этот путь вручную, добавив аргумент -Djava.library.path=<path to otfxjni file> к процессу выполнения.

0 голосов
/ 06 декабря 2010

Вероятная причина, которую я вижу, в том, что в вашем пути к библиотеке Java нет библиотеки otfxjni.dll (или otfxjni.so, если вы используете linux).

Из JavaDoc (из UnsatisfiedLinkError):

Брошен, если виртуальная машина Java не могу найти подходящий определение метода на родном языке объявлено native.

...