0

I am trying to use RecyclerView in my project, but because we have some bad proxies, I cannot afford to add compile "com.android.support:recyclerview-v7:+" to my build.gradle because the download is very slow. Instead, for the other libraries, I simply added the .jar files to the 'libs' folder of the project and in build.gradle I have compile files('libs/android-support-v7-recyclerview.jar'). I got the .jar from the Android SDK under /extras/android/support/v7/recyclerview/libs. I got the android-support-v4 library from the same place and it works fine.

The app is building, but at runtime, I get a NoClassDefFoundError. The behavior can be replicated using Google's RecyclerView sample found in /samples/android-21/ui/views/RecyclerView by replacing in Application/build.gradle these lines:

compile "com.android.support:support-v4:21.+"
compile "com.android.support:gridlayout-v7:21.+"
compile "com.android.support:cardview-v7:21.+"

compile "com.android.support:recyclerview-v7:+"

With these ones:

compile files('libs/android-support-v4.jar')
compile files('libs/android-support-v7-gridlayout.jar')
compile files('libs/android-support-v7-cardview.jar')
compile files('libs/android-support-v7-recyclerview.jar')

And adding the 4 jar files from the same SDK to Application/libs (you need to create the folder as it doesn't have one).

The full error log generated by the Google sample:

04-27 16:22:02.122 1405-1405/com.example.android.recyclerview E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                Process: com.example.android.recyclerview, PID: 1405
                                                                                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.recyclerview/com.example.android.recyclerview.MainActivity}: android.view.InflateException: Binary XML file line #38: Error inflating class android.support.v7.widget.RecyclerView
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                    at android.os.Looper.loop(Looper.java:135)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                 Caused by: android.view.InflateException: Binary XML file line #38: Error inflating class android.support.v7.widget.RecyclerView
                                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
                                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                                    at com.example.android.recyclerview.RecyclerViewFragment.onCreateView(RecyclerViewFragment.java:67)
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                                    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                                    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
                                                                                    at com.example.android.common.activities.SampleActivityBase.onStart(SampleActivityBase.java:39)
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
                                                                                    at android.app.Activity.performStart(Activity.java:6006)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                    at android.os.Looper.loop(Looper.java:135) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                 Caused by: java.lang.reflect.InvocationTargetException
                                                                                    at java.lang.reflect.Constructor.newInstance(Native Method)
                                                                                    at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
                                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:607)
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                                                                                    at com.example.android.recyclerview.RecyclerViewFragment.onCreateView(RecyclerViewFragment.java:67) 
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                                                                                    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                                                                                    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602) 
                                                                                    at com.example.android.common.activities.SampleActivityBase.onStart(SampleActivityBase.java:39) 
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
                                                                                    at android.app.Activity.performStart(Activity.java:6006) 
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) 
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                    at android.os.Looper.loop(Looper.java:135) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/recyclerview/R$styleable;
                                                                                    at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:487)
                                                                                    at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:456)
                                                                                    at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                                    at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                                                                                    at com.example.android.recyclerview.RecyclerViewFragment.onCreateView(RecyclerViewFragment.java:67) 
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                                                                                    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                                                                                    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602) 
                                                                                    at com.example.android.common.activities.SampleActivityBase.onStart(SampleActivityBase.java:39) 
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
                                                                                    at android.app.Activity.performStart(Activity.java:6006) 
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) 
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                    at android.os.Looper.loop(Looper.java:135) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                 Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.recyclerview.R$styleable" on path: DexPathList[[zip file "/data/app/com.example.android.recyclerview-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
                                                                                    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                                    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                                    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                                                    at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:487) 
                                                                                    at android.support.v7.widget.RecyclerView.<init>(RecyclerView.java:456) 
                                                                                    at java.lang.reflect.Constructor.newInstance(Native Method) 
                                                                                    at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
                                                                                    at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
                                                                                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
                                                                                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
                                                                                    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
                                                                                    at com.example.android.recyclerview.RecyclerViewFragment.onCreateView(RecyclerViewFragment.java:67) 
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) 
                                                                                    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                                                                                    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) 
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602) 
                                                                                    at com.example.android.common.activities.SampleActivityBase.onStart(SampleActivityBase.java:39) 
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236) 
                                                                                    at android.app.Activity.performStart(Activity.java:6006) 
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) 
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                    at android.os.Looper.loop(Looper.java:135) 
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                    at java.lang.reflect.Method.invoke(Native Method) 
                                                                                    at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                    Suppressed: java.lang.ClassNotFoundException: android.support.v7.recyclerview.R$styleable
                                                                                    at java.lang.Class.classForName(Native Method)
                                                                                    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                                                    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                                                    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                                                            ... 32 more
                                                                                 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

I also tried, as people suggested, to use the classes.jar found in extras/android/m2repository/com/android/support/recyclerview-v7/23.3.0/recyclerview-v7-23.3.0.aar but the result was exactly the same.

Any hints on what I might be missing/doing wrong?

Scorpio
  • 1,124
  • 1
  • 11
  • 28
  • 1
    I think the `jar` file is not enough. You have to use the `aar` file (recyclerview-v7-23.3.0.aar) instead. http://stackoverflow.com/questions/16682847/how-to-manually-include-external-aar-package-using-new-gradle-android-build-syst – Blehi Apr 27 '16 at 16:23
  • @Blehi : Yep, that was it. Thanks for that! You can post your comment as an answer so I can accept it! Turns out the jar file had the code, but it didn't have the resources so using the aar instead fixed it. – Scorpio Apr 28 '16 at 11:21

1 Answers1

1

The jar file doesn't have all the necessary source code in it. You have to use the aar file instead.

Please check this thread how an aar file can be included in your project.

Community
  • 1
  • 1
Blehi
  • 1,990
  • 1
  • 18
  • 20