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

processAppleRunTime java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Byte

Open shalk opened this issue 2 years ago • 3 comments

the exception info is as follow

https://github.com/drewnoakes/metadata-extractor/blob/2.16.0/Source/com/drew/metadata/exif/ExifTiffHandler.java#L385

Exception Stack:
	at com.drew.metadata.exif.ExifTiffHandler.processAppleRunTime(ExifTiffHandler.java:385)
	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:103)

byte flags = (Byte)values.get("flags");

I have debug into the line. the value of "flags" is "1" ,type is char[]

is Byte.parseByte(values.get("flags").toString()) right?

shalk avatar Sep 05 '21 14:09 shalk

@shalk thanks for filing this. Can you share an image that reproduces this issue?

It may be that the value is sometimes a string, and sometimes a Byte. I would prefer to only parse when the value is actually a string.

drewnoakes avatar Sep 05 '21 23:09 drewnoakes

echo @drewnoakes' request for source image. I had only seen similar problems when the BPLIST was malformed or un-parsable. The top object is expected to be a map of bytes (a dict by the marker).

nosnhojbob avatar Jan 12 '22 03:01 nosnhojbob

Also have an error while reading exif: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long at com.drew.metadata.apple.AppleRunTimeReader.processAppleRunTime(AppleRunTimeReader.java:75) version: 2.18.0 file attached. sample

nnl-1 avatar Jun 09 '22 21:06 nnl-1