metadata-extractor icon indicating copy to clipboard operation
metadata-extractor copied to clipboard

ClassCastException from String to Long

Open Shepard opened this issue 2 years ago • 0 comments

I get a very similar exception to the recently reported issue #553.

The image I'm trying to read can be found here: https://tool.trendexplorer.com/uploads/microtrends/f/f/37973b9f1867abf32b5983899cf9cb8b7f4e9891.jpg Unfortunately I don't know what the licensing situation with this image is so I cannot provide it as a sample image for your public library.

In my case I'm using a wrapped version of 2.15.0.1 (org.tallison) as provided with tika-parsers but I could also reproduce this by feeding the image into ImageMetadataReader via the command line in version 2.16.0.

The exception there is:

java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Long (java.lang.String and java.lang.Long are in module java.base of loader 'bootstrap')
	at com.drew.metadata.exif.ExifTiffHandler.processAppleRunTime(ExifTiffHandler.java:391)
	at com.drew.metadata.exif.ExifTiffHandler.customProcessTag(ExifTiffHandler.java:251)
	at com.drew.imaging.tiff.TiffReader.processIfd(TiffReader.java:220)
	at com.drew.metadata.exif.ExifTiffHandler.processMakernote(ExifTiffHandler.java:645)
	at com.drew.metadata.exif.ExifTiffHandler.customProcessTag(ExifTiffHandler.java:207)
	at com.drew.imaging.tiff.TiffReader.processIfd(TiffReader.java:220)
	at com.drew.imaging.tiff.TiffReader.processIfd(TiffReader.java:214)
	at com.drew.imaging.tiff.TiffReader.processTiff(TiffReader.java:78)
	at com.drew.metadata.exif.ExifReader.extract(ExifReader.java:94)
	at com.drew.metadata.exif.ExifReader.extract(ExifReader.java:84)
	at com.drew.metadata.exif.ExifReader.readJpegSegments(ExifReader.java:63)
	at com.drew.imaging.jpeg.JpegMetadataReader.processJpegSegmentData(JpegMetadataReader.java:134)
	at com.drew.imaging.jpeg.JpegMetadataReader.process(JpegMetadataReader.java:126)
	at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(JpegMetadataReader.java:77)
	at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(JpegMetadataReader.java:84)
	at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:146)
	at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:124)
	at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:204)
	at com.drew.imaging.ImageMetadataReader.main(ImageMetadataReader.java:253)

The offending line is:

directory.setLong(AppleRunTimeMakernoteDirectory.CMTimeValue, (Long)values.get("value"));

It seems it finds a String stored under the key "value".

Shepard avatar Sep 07 '21 09:09 Shepard