gpt4 book ai didi

java - UnsatisfiedLinkError - 无法加载库 - 在资源路径中找不到 native 库

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:57 26 4
gpt4 key购买 nike

我在尝试运行 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...])

我的问题是:

1) 它究竟试图找到什么以及在哪里?

2) 为什么它显然是在搜索 myproject/target/classes/ 目录?我没有设置它。

3) 为什么它忽略了我在 Eclipse 的用户库描述中为 tess4j.jar 设置的“本地目录路径”?我的 DLL 在那里。如果它不忽略路径,它会找到 DLL。

4) 为什么它显然在 DLL 名称前加上 win32-x86-64/?我没有设置这个。这是一些API的标准前缀吗?

5) 什么是“资源路径”?如何设置?

最佳答案

如错误所述,它正在 java.class.path 中寻找 win32-x86-64/libtesseract302.dll。您的部分类路径显然包含 myproject/target/classes

前缀表示要加载的共享库的平台和架构,它允许不同目标的共享库包含在同一个存档中。如果 JNA 在系统加载路径中找不到请求的库名称,那么它会尝试在您的资源路径中找到它(如有必要,将其解压缩)。因此,如果将 DLL 放入 jar 文件中,则需要为其提供 win32-x86-64 前缀才能加载。

“资源路径”名义上是您的类路径;基本上可以通过 ClassLoader.getResource() 访问的任何地方。

关于java - UnsatisfiedLinkError - 无法加载库 - 在资源路径中找不到 native 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768453/

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