Mac系统IntelliJ使用tess4J调用tesseract报UnsatisfiedLinkError求助
解决Mac下IntelliJ中tess4J调用tesseract的UnsatisfiedLinkError问题
你遇到的错误信息:
Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract':
dlopen(libtesseract.dylib, 0x0009): tried: 'libtesseract.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibtesseract.dylib' (no such file),
终端能正常运行tesseract说明系统已安装,但JVM找不到对应的动态库,按以下步骤解决:
第一步:定位libtesseract.dylib的实际路径
在终端执行以下命令:- 先找tesseract的位置:
which tesseract - 查看该tesseract依赖的库路径:
otool -L $(which tesseract)
从输出里找到libtesseract.dylib对应的绝对路径,比如/usr/local/lib/libtesseract.dylib
- 先找tesseract的位置:
第二步:让JVM能加载到这个库
选以下任意一种方法即可:- 设置IntelliJ的VM参数:打开Run/Debug Configurations,在「VM options」中添加
-Djava.library.path=/usr/local/lib(替换成你第一步找到的lib目录路径) - 设置DYLD_LIBRARY_PATH环境变量:在IntelliJ内置终端执行
export DYLD_LIBRARY_PATH=/usr/local/lib,再运行项目;也可以把这个变量添加到系统环境变量中(编辑~/.zshrc或~/.bashrc,添加后执行source ~/.zshrc生效) - 复制库到JVM默认扫描目录:把
libtesseract.dylib复制到/Library/Java/Extensions目录下,JVM启动时会自动扫描这个目录
- 设置IntelliJ的VM参数:打开Run/Debug Configurations,在「VM options」中添加
第三步:检查版本匹配性
确认项目中引入的tess4J版本和系统安装的tesseract版本一致,比如系统装的是tesseract 5.x,就使用tess4J 5.x版本,版本不兼容也会导致库加载失败
内容的提问来源于stack exchange,提问作者FearYa
相关产品推荐
相关产品推荐

