drewnoakes / metadata-extractor

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files
Apache License 2.0
2.56k stars 480 forks source link

Crash when readmetadata #447

Closed dtnguyn closed 4 years ago

dtnguyn commented 4 years ago

(Please include as much information as possible, and attach a sample image if possible.) 2019-11-10 14:10:01.696 9480-9480/com.nguyen.galleryshield E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nguyen.galleryshield, PID: 9480 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/adobe/internal/xmp/options/ParseOptions; at com.drew.metadata.xmp.XmpReader.(XmpReader.java:71) at com.drew.imaging.jpeg.JpegMetadataReader.(JpegMetadataReader.java:57) at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(JpegMetadataReader.java:84) at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:147) at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:125) at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:104) at com.nguyen.galleryshield.Activity.ActivityContentDetail.onOptionsItemSelected(ActivityContentDetail.kt:153) at android.app.Activity.onMenuItemSelected(Activity.java:4150) at androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:384) at androidx.appcompat.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:219) at androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109) at androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109) at androidx.appcompat.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:64) at androidx.appcompat.widget.Toolbar$1.onMenuItemClick(Toolbar.java:207) at androidx.appcompat.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:781) at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840) at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158) at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991) at androidx.appcompat.view.menu.MenuPopup.onItemClick(MenuPopup.java:128) at android.widget.AdapterView.performItemClick(AdapterView.java:330) at android.widget.AbsListView.performItemClick(AbsListView.java:1257) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3265) at android.widget.AbsListView.onTouchUp(AbsListView.java:4254) at android.widget.AbsListView.onTouchEvent(AbsListView.java:3998) at androidx.appcompat.widget.DropDownListView.onTouchEvent(DropDownListView.java:217) at androidx.appcompat.widget.MenuPopupWindow$MenuDropDownListView.onTouchEvent(MenuPopupWindow.java:135) at android.view.View.dispatchTouchEvent(View.java:13499) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3079) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2756) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3085) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2770) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3085) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2770) at android.widget.PopupWindow$PopupDecorView.dispatchTouchEvent(PopupWindow.java:2554) at android.view.View.dispatchPointerEvent(View.java:13758) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5836) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5619) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5115) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5168) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5134) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5274) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5142) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5331) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5115) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5168) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5134) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5142) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5115) 2019-11-10 14:10:01.696 9480-9480/com.nguyen.galleryshield E/AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7894) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7863) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7803) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8019) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:189) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:336) at android.os.Looper.loop(Looper.java:174) at android.app.ActivityThread.main(ActivityThread.java:7682) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.adobe.internal.xmp.options.ParseOptions" on path: DexPathList[[zip file "/data/app/com.nguyen.galleryshield-_6nGbfdQmwpGZSxFgPUxQw==/base.apk"],nativeLibraryDirectories=[/data/app/com.nguyen.galleryshield-_6nGbfdQmwpGZSxFgPUxQw==/lib/arm64, /system/lib64, /system/product/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 60 more

drewnoakes commented 4 years ago

You need xmpcore on the classpath.

dtnguyn commented 4 years ago

You need xmpcore on the classpath.

Thank you so much for replying to my issue! I am very new to this library, can you show me where to get the xmpcore, and how to include it into my classpath? Thank You!

Nadahar commented 4 years ago

@dzung123 There are multiple ways to achieve this, but none are specific to this library. This is general Java knowledge, and if you don't have this, you should read up on the Java classpath topic. The simplest way may be to use Maven, which will handle the classpath details for you, but getting to know Maven requires some effort.

In either case, you can't expect others to educate you about basic things like this in a GitHub issue.

drewnoakes commented 4 years ago

@Nadahar thanks for helping out.

@dzung123 I also think Maven might be the easiest route forward for you here. Alternatively just get the xmpcore jar file and stick it next to the metadata-extractor jar file. Good luck.