当我使用 Apache Tika 提取 JPEG 图像的元数据时遇到以下错误
java.lang.NoSuchMethodError: com.adobe.xmp.properties.XMPPropertyInfo.getValue()Ljava/lang/Object;
at com.drew.metadata.xmp.XmpReader.extract(Unknown Source)
at com.drew.imaging.jpeg.JpegMetadataReader.extractMetadataFromJpegSegmentReader(Unknown Source)
at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(Unknown Source)
at org.apache.tika.parser.image.ImageMetadataExtractor.parseJpeg(ImageMetadataExtractor.java:91)
at org.apache.tika.parser.jpeg.JpegParser.parse(JpegParser.java:56)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:242)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:242)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120
正在使用的提卡版本:提卡 1.4
错误的原因是什么?
另请注意,API 会正确提取不包含任何 XMP 元数据的图像的元数据。此错误仅发生在具有 XMP 元数据的映像上。
Apache Tika 使用 API: 元数据提取器从图像文件中提取元数据。
造成该原因的最可能原因是,如果类路径中同时具有 tika 和元数据提取器库。元数据提取器的二进制文件可能是使用与 Tika 使用的库不同的 XMPCore 库构建的。
解决方案:从类路径中删除元数据提取器的库。
两个项目不兼容使用 XMPCore 库的问题未解决:https://code.google.com/p/metadata-extractor/issues/detail?id=55