Suz*_*ioc 12 java eclipse dll java-native-interface jna
我在运行时遇到以下错误,同时尝试运行Tess4J:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'libtesseract302': Native library (win32-x86-64/libtesseract302.dll) not found in resource path ([myproject/target/classes/, ...some jars...])
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1)它到底想要找到什么以及在哪里?
2)为什么显然会搜索myproject/target/classes/目录?我无处可去.
3)为什么忽略我tess4j.jar在Eclipse中的用户库描述中设置的"本机目录路径" ?我的DLL就在那里.如果它没有忽略路径,它会找到DLL.
4)为什么它显然在前面加上DLL名称win32-x86-64/?我无处可去.这是某些API的标准前缀吗?
5)什么是"资源路径"?怎么设置呢?
像错误说,它是寻找win32-x86-64/libtesseract302.dll在java.class.path.你的类路径的一部分显然包括myproject/target/classes.
前缀表示要加载的共享库的平台和体系结构,允许将不同目标的共享库包含在同一个归档中.如果JNA无法在系统加载路径中找到所请求的库名称,则它会尝试在您的资源路径中找到它(如果需要,将其解压缩).因此,如果您将DLL放在jar文件中,则需要为其添加win32-x86-64前缀以便加载它.
"资源路径"名义上是你的阶级路径; 基本上可到达的任何地方ClassLoader.getResource().