macOS下Java无法加载Tesseract库的解决方法咨询
Tesseract Java UnsatisfiedLinkError 解决方法(MacOS Monterey 12.6)
问题描述
已通过brew install tesseract安装Tesseract,终端可正常运行tesseract命令,但启动Java应用时抛出以下异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': dlopen(libtesseract.dylib, 0x0009): tried: '/Users/USERNAME/Library/Java/JavaVirtualMachines/corretto-17.0.5/Contents/Home/bin/./libtesseract.dylib' (no such file), '/Users/USERNAME/Library/Java/JavaVirtualMachines/corretto-17.0.5/Contents/Home/bin/../lib/libtesseract.dylib' (no such file), 'libtesseract.dylib' (no such file), '/usr/lib/libtesseract.dylib' (no such file), '/Users/USERNAME/Desktop/Projects/Twitter Bot Detector/libtesseract.dylib' (no such file) dlopen(libtesseract.dylib, 0x0009): tried: '/Users/USERNAME/Library/Java/JavaVirtualMachines/corretto-17.0.5/Contents/Home/bin/./libtesseract.dylib' (no such file), '/Users/USERNAME/Library/Java/JavaVirtualMachines/corretto-17.0.5/Contents/Home/bin/../lib/libtesseract.dylib' (no such file), 'libtesseract.dylib' (no such file), '/usr/lib/libtesseract.dylib' (no such file), '/Users/USERNAME/Desktop/Projects/Twitter Bot Detector/libtesseract.dylib' (no such file)
实际libtesseract.dylib路径为/usr/local/lib/libtesseract.dylib,但dlopen未尝试该路径。
解决方法
方法一:启动Java时指定库路径
启动应用时通过-Djava.library.path参数直接指定Tesseract库所在路径:
java -Djava.library.path=/usr/local/lib -jar your-application.jar
如果使用IDE(如IntelliJ IDEA),在运行配置的VM options中添加:
-Djava.library.path=/usr/local/lib
方法二:配置系统环境变量
临时生效:在启动Java应用的终端窗口中先执行以下命令,再启动应用:
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
永久生效:编辑Shell配置文件(如~/.zshrc或~/.bash_profile),添加以下内容:
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
保存后执行source ~/.zshrc(或对应配置文件)使修改生效。
方法三:创建软链接到Java查找路径
将libtesseract.dylib链接到Java虚拟机的lib目录(替换命令中的USERNAME为你的实际用户名):
sudo ln -s /usr/local/lib/libtesseract.dylib /Users/USERNAME/Library/Java/JavaVirtualMachines/corretto-17.0.5/Contents/Home/lib/libtesseract.dylib
内容的提问来源于stack exchange,提问作者Abdullah Tellioglu
相关产品推荐
相关产品推荐

