使用Tess4J的doOCR实现图片转文本时遇JNA方法缺失错误求解决
问题解决:Tess4J doOCR抛出NoSuchMethodError错误
错误原因
这个错误是JNA版本冲突导致的:项目中可能存在其他依赖引入了低版本JNA,和你配置的5.13.0版本冲突,导致Tess4J找不到对应的Native.load方法。
解决方案
1. 排查并排除依赖冲突
执行Maven命令查看依赖树,定位引入旧版本JNA的依赖:
mvn dependency:tree -Dverbose -Dincludes=net.java.dev.jna
找到冲突的依赖后,在该依赖的配置中添加exclusions,排除旧版本的JNA:
<dependency> <!-- 替换为冲突依赖的groupId和artifactId --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <exclusions> <exclusion> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> </exclusion> <exclusion> <groupId>net.java.dev.jna</groupId> <artifactId>jna-platform</artifactId> </exclusion> </exclusions> </dependency>
2. 强制指定JNA版本并隔离Tess4J的依赖
修改Maven依赖配置,排除Tess4J自带的JNA依赖,确保使用你指定的版本:
<dependencies> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>5.7.0</version> <exclusions> <exclusion> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> </exclusion> <exclusion> <groupId>net.java.dev.jna</groupId> <artifactId>jna-platform</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.13.0</version> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna-platform</artifactId> <version>5.13.0</version> </dependency> </dependencies>
3. 清理并重建项目
执行以下命令清理旧的依赖文件,重新下载正确版本:
mvn clean install
同时检查IDE的依赖库目录,确保没有残留的旧版本JNA jar包,如有直接删除。
内容的提问来源于stack exchange,提问作者Prashanth
相关产品推荐
相关产品推荐

