duanhong169 / ColorPicker

🎨 A color picker for Android. Pick a color using color wheel and slider (HSV & alpha).
Apache License 2.0
361 stars 82 forks source link

ClassDefException #7

Closed ksi3321 closed 5 years ago

ksi3321 commented 5 years ago

I tried using the latest version 1.1.5 in my project and when i click on a button to open the color picker it crashes and displays the following exception: java.lang.NoClassDefFoundError: Failed resolution of: Ltop/defaults/checkerboarddrawable/CheckerboardDrawable; at top.defaults.colorpicker.AlphaSliderView.onDraw(AlphaSliderView.java:43) at android.view.View.draw(View.java:18398) at android.view.View.updateDisplayListIfDirty(View.java:17376) at android.view.View.draw(View.java:18160) at android.view.ViewGroup.drawChild(ViewGroup.java:3968) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754) at android.view.View.updateDisplayListIfDirty(View.java:17371) at android.view.View.draw(View.java:18160) at android.view.ViewGroup.drawChild(ViewGroup.java:3968) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754) at android.support.constraint.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1964) at android.view.View.updateDisplayListIfDirty(View.java:17371) at android.view.View.draw(View.java:18160) at android.view.ViewGroup.drawChild(ViewGroup.java:3968) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754) at android.view.View.draw(View.java:18401) at android.view.View.updateDisplayListIfDirty(View.java:17376) at android.view.View.draw(View.java:18160) at android.view.ViewGroup.drawChild(ViewGroup.java:3968) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754) at android.view.View.updateDisplayListIfDirty(View.java:17371) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:722) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:728) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:836) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3168) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2964) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2552) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959) at android.view.Choreographer.doCallbacks(Choreographer.java:734) at android.view.Choreographer.doFrame(Choreographer.java:670) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 10-10 18:57:21.573 23645-23645/com.monstarlab.instantmac E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "top.defaults.checkerboarddrawable.CheckerboardDrawable" on path: DexPathList[[zip file "/data/app/com.monstarlab.instantmac-1/base.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.monstarlab.instantmac-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.monstarlab.instantmac-1/lib/arm, /data/app/com.monstarlab.instantmac-1/base.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_dependencies_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_0_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_1_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_2_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_3_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_4_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_5_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_6_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_7_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_8_apk.apk!/lib/armeabi-v7a, /data/app/com.monstarlab.instantmac-1/split_lib_slice_9_apk.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]

duanhong169 commented 5 years ago

Try a full rebuild of your project?

Android Studio: Build -> Clean Project, then Run it again.

ksi3321 commented 5 years ago

It does not help. I am still getting the crash

ksi3321 commented 5 years ago

Okay so I don't quite understand what happened here but I managed to solve the crash. When i saw your sample project i noticed that in the external libraries folder, there were 2 additional dependencies:

screen shot 2018-10-11 at 10 47 04 am

This was missing in my project after i finished importing the dependency on gradle which is implementation 'com.github.duanhong169:colorpicker:1.1.5'

after i manually added the checkerboard dependency implementation 'com.github.duanhong169:checkerboarddrawable:1.0.2' it worked and I was able to see the color picker

duanhong169 commented 5 years ago

Yes, you are right, the library colorpicker:1.1.5 has some transitive dependencies which include checkerboarddrawable:1.0.2, but it should be handled by gradle automatically.

I confirmed these transitive dependencies are working in the sample project:

    implementation 'com.github.duanhong169:colorpicker:1.1.5'
//    implementation project(':colorpicker')

anyway, if manually add the dependencies can solve your issue, that's acceptable :)

Maulikpatel2492 commented 3 years ago

I tried using the latest version 1.1.6 in my project and when i click on a button to open the color picker it crashes and displays the following exception: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.apanishoppy, PID: 9247 java.lang.NoClassDefFoundError: Failed resolution of: Ltop/defaults/checkerboarddrawable/CheckerboardDrawable; at top.defaults.colorpicker.AlphaSliderView.onDraw(AlphaSliderView.java:43) at android.view.View.draw(View.java:19382) at android.view.View.updateDisplayListIfDirty(View.java:18311) at android.view.View.draw(View.java:19099) at android.view.ViewGroup.drawChild(ViewGroup.java:4401) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4180) at android.view.View.updateDisplayListIfDirty(View.java:18297) at android.view.View.draw(View.java:19099) at android.view.ViewGroup.drawChild(ViewGroup.java:4401) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4180) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1882) at android.view.View.updateDisplayListIfDirty(View.java:18297) at android.view.View.draw(View.java:19099) at android.view.ViewGroup.drawChild(ViewGroup.java:4401) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4180) at android.view.View.draw(View.java:19385) at android.view.View.updateDisplayListIfDirty(View.java:18311) at android.view.View.draw(View.java:19099) at android.view.ViewGroup.drawChild(ViewGroup.java:4401) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4180) at android.view.View.updateDisplayListIfDirty(View.java:18297) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:676) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:682) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:790) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3091) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2884) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2437) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1446) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6954) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:980) at android.view.Choreographer.doCallbacks(Choreographer.java:792) at android.view.Choreographer.doFrame(Choreographer.java:724) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:966) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:192) at android.app.ActivityThread.main(ActivityThread.java:6711) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826) Caused by: java.lang.ClassNotFoundException: Didn't find class "top.defaults.checkerboarddrawable.CheckerboardDrawable" on path: DexPathList[[zip file "/data/app/com.apanishoppy-qxWio9GDx8GgNE79gHEhbQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.apanishoppy-qxWio9GDx8GgNE79gHEhbQ==/lib/arm64, /data/app/com.apanishoppy-qxWio9GDx8GgNE79gHEhbQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64, /system/vendor/lib64/hw, /system/vendor/lib64]]