ocr识别遇到的问题(nested exception is java.lang.UnsatisfiedLinkError)

目录

前言:

问题描述:

解决思路:

解决方法:

总结反思:


前言:

上篇讲过我使用冰蓝的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包不一样

查找问题的时候官网也没仔细看,直奔官网截图去了,引以为戒

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Handler dispatch failed; nested exception is java.lang.UnsatisfiedLinkErrorJava中的一个异常错误。它通常表示在运行时加载本地库时出现问题。 当Java程序尝试加载本地库(Native Library)时,如果找不到或无法满足依赖关系,就会抛出UnsatisfiedLinkError异常。这通常发生在以下几种情况下: 1. 本地库文件不存在:Java程序无法找到指定的本地库文件。这可能是由于文件路径错误、文件被删除或者文件权限问题导致的。 2. 本地库文件依赖缺失:本地库文件可能依赖其他的动态链接库或共享库,如果这些依赖关系无法满足,就会导致UnsatisfiedLinkError异常。 3. 本地库文件与Java虚拟机不兼容:本地库文件可能是使用不同版本的编译器或链接器生成的,与当前Java虚拟机不兼容。 解决这个问题的方法有以下几种: 1. 检查本地库文件路径:确保本地库文件存在,并且路径正确。可以使用绝对路径或相对路径指定本地库文件。 2. 检查本地库文件依赖:如果本地库文件依赖其他库文件,确保这些依赖关系已经满足。可以使用工具如ldd(Linux)或otool(Mac)来检查本地库文件的依赖关系。 3. 检查Java虚拟机与本地库文件的兼容性:确保本地库文件是与当前使用的Java虚拟机兼容的。如果不兼容,可以尝试重新编译或使用兼容的版本。 4. 检查操作系统和硬件架构:确保本地库文件与操作系统和硬件架构兼容。例如,32位的本地库文件不能在64位的Java虚拟机上加载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值