目录
前言:
上篇讲过我使用冰蓝的jar包在Java 项目中扫描识别图片中的文字,这篇写更新上线中遇到的问题。
问题描述:
项目打包更到线上后,接口调用报错Can't load library:/home/java/agrisubs/apps/dependencies/libdnnl.so.1
"Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkError: com.spire.ocr.NativeLibrary.detectText(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;"
Caused by: java.lang.RuntimeException: Load /home/java/agrisubs/apps/dependencies/libdnnl.so.1 failed, please check it exists.
at com.spire.ocr.NativeLibrary.spr≂↮(Unknown Source)
at com.spire.ocr.NativeLibrary.spr▋↮(Unknown Source)
at com.spire.ocr.NativeLibrary.<init>(Unknown Source)
at com.spire.ocr.packages.sprrtd.spr▌︼(Unknown Source)
at com.spire.ocr.packages.sprfxd.spr●︻(Unknown Source)
at com.spire.ocr.packages.sprfxd.spr⅟︼(Unknown Source)
at com.spire.ocr.packages.sprfxd.spr㈯⃠(Unknown Source)
... 101 more
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /home/java/agrisubs/apps/dependencies/libdnnl.so.1
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1820)
at java.lang.Runtime.load0(Runtime.java:782)
at java.lang.System.load(System.java:1100)
... 108 more
解决思路:
意思就是在dependencies这个目录下没找到libdnnl.so.1这个包,我检查了下我本地项目的dependencies目录:
然后又去翻了下官网上的截图:如何在 Java 项目中扫描识别图片中的文字 (e-iceblue.cn)
确实没看到这个包
于是我想着去网上下载libdnnl.so.1,放到线上服务器dependencies文件夹下,在网上搜半天基本没这个包的信息,但大概知道这个是linux服务器上的,怀疑是不是linux系统不兼容这个ocr识别功能
最后搞半天又看了下官网,发现官网其实提供了linux支持的jar包
解决方法:
下载下来后确实发现了libdnnl.so.1,更新上线问题解决:
总结反思:
出现问题的根本原因是本地用的windows操作环境,线上用的linux操作系统,两个系统对这个ocr识别功能所需的jar包不一样
查找问题的时候官网也没仔细看,直奔官网截图去了,引以为戒