使用metadata-extractor提取图片EXIF元数据报NoClassDefFoundError如何解决
问题修复方案
你遇到的java.lang.NoClassDefFoundError: com/drew/imaging/ImageProcessingException报错,核心原因是运行时JVM无法加载到metadata-extractor库的类文件,属于依赖类路径缺失问题,可按以下步骤修复:
修复步骤
- 检查项目依赖配置
- 若你是手动导入jar包使用:右键项目依次选择
Build Path->Configure Build Path,在Libraries标签页确认metadata-extractor的jar包已正常添加到Classpath/Modulepath下,没有出现红叉报错提示。 - 若你是Maven/Gradle管理依赖:
- Maven项目检查pom.xml中的依赖配置,不要添加
<scope>provided</scope>配置,保留默认compile scope即可 - Gradle项目检查build.gradle中的依赖配置,不要使用
compileOnly声明该依赖,改用implementation声明
- Maven项目检查pom.xml中的依赖配置,不要添加
- 若你是手动导入jar包使用:右键项目依次选择
- 检查运行配置的类路径
右键SampleUsage类依次选择Run As->Run Configurations,找到当前对应的Java运行配置,切换到Classpath标签页,确认User Entries下已经包含metadata-extractor的jar包,若缺失可点击「Add JARs」或「Add External JARs」手动导入。 - 额外注意事项
- 部分版本的metadata-extractor需要同时引入xmpcore依赖,若修复上述配置后仍有类找不到的报错,可同步添加xmpcore的jar包到类路径中。
- 依赖问题修复后若出现IO异常,需修改代码中的图片路径为你本地实际存在的图片绝对路径即可。
内容的提问来源于stack exchange,提问作者Giyu
相关产品推荐
相关产品推荐

