我正在努力尝试通过 Tess4J 使一个使用 Tesseract 的 Java servlet 工作。项目。当库主类 (TessAPI) 初始化时,servlet 停止并出现以下异常:
java.lang.UnsatisfiedLinkError: Access is denied.
com.sun.jna.Native.open(Native Method)
com.sun.jna.Native.open(Native.java:1759)
com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260)
com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
com.sun.jna.Library$Handler.<init>(Library.java:147)
com.sun.jna.Native.loadLibrary(Native.java:412)
com.sun.jna.Native.loadLibrary(Native.java:391)
net.sourceforge.tess4j.TessAPI.<clinit>(Unknown Source)
it.sampleProj.DocumentVisualizer.startOCRConfidence(DocumentVisualizer.java:301)
it.sampleProj.DocumentVisualizer.startRecognition(DocumentVisualizer.java:220)
it.sampleProj.DocumentIdentifier.recognizeDocument(DocumentIdentifier.java:147)
it.sampleProj.DocumentIdentifier.startDocumentSearch(DocumentIdentifier.java:89)
it.sampleProj.DocumentRecognizerServlet.doPost(DocumentRecognizerServlet.java:106)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
我在 Windows 2008 Server R2 64 位上使用 Apache Tomcat8 64 位、JDK 7.0.60 64 位和 Tesseract.exe 以及 64 位的相关 .dll 文件。 这个错误听起来像是权限问题,我不确定 Tomcat 运行时使用的用户帐户是什么。无论如何,我已经授予了对包含在 tomcat 的 lib 文件夹中的两个 .ddl 文件的所有权限(libtesseract302.dll 和 liblept168.dll)
有没有一种方法可以获取有关访问被拒绝问题感兴趣的资源的更多信息?
最佳答案
最后问题是32-64位不匹配导致的。
正如我所说,Tomcat、JVM、Tesseract 和 OS 都是 64 位版本。但是 war 是在 32 位build设置下产生的。 为 64 位重新创建 .war 为我解决了这个问题。
关于tomcat - java.lang.UnsatisfiedLinkError : Access denied. 使用 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24206485/