Gson NoClassDefFoundError after ADT and SDK Tools update to v17
Asked Answered
O

10

43

Today I updated my ADT and SDK Tools to v17 and my projects using Google's gson jar library started to throw NoClassDefFoundError. Here's the logcat output:

> 03-22 12:30:58.941: E/AndroidRuntime(21672): FATAL EXCEPTION: main
> 03-22 12:30:58.941: E/AndroidRuntime(21672):
> java.lang.NoClassDefFoundError: com.google.gson.Gson 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> com.matriksdata.conn.XRequestHandler.connect(XRequestHandler.java:35)
> 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> com.matriksdata.conn.XRequestHandler.makeRequest(XRequestHandler.java:
> 29) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> com.matriksdata.bavul.XBaseWithConnectionActivity.makeRequest(XBaseWithConnectionActivity.java:
> 46) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> com.matriksdata.ui.login.SplashScreenActivity.onCreate(SplashScreenActivity.java:
> 36) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.Activity.performCreate(Activity.java:4465) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
> 1049) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> 1919) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
> 1980) 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.ActivityThread.access$600(ActivityThread.java:122) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
> 03-22 12:30:58.941: E/AndroidRuntime(21672):    at
> android.os.Handler.dispatchMessage(Handler.java:99) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> android.os.Looper.loop(Looper.java:137) 03-22 12:30:58.941:
> E/AndroidRuntime(21672):    at
> android.app.ActivityThread.main(ActivityThread.java:4340) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> java.lang.reflect.Method.invokeNative(Native Method) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> java.lang.reflect.Method.invoke(Method.java:511) 03-22 12:30:58.941:
> E/AndroidRuntime(21672):    at com.android.internal.os.ZygoteInit
> $MethodAndArgsCaller.run(ZygoteInit.java:784) 03-22 12:30:58.941:
> E/AndroidRuntime(21672):    at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-22
> 12:30:58.941: E/AndroidRuntime(21672):    at
> dalvik.system.NativeStart.main(Native Method)

any ideas?

Osteogenesis answered 22/3, 2012 at 10:43 Comment(1)
Have you tried to Clean the project from eclipse?Pursy
C
77

I faced a similar problem today.

This fixed it for me:

  • Remove all Android Library projects and external jars from the build path.
  • Create a folder named 'libs' in your project.
  • Place all external .jars in that folder, the ADT should now place them under 'Android Dependencies'.
  • Re-import all your previous Android Library projects the normal way.

The issue is that external jars are not placed in the 'libs' folder by default when using Properties - Java Build Path- Add External Jar, instead they are placed under 'Referenced Libraries' instead of 'Android Dependencies' and this causes the NoClassDefFoundError.

Please, check Dealing with dependencies in Android projects for more details.

Carpophore answered 22/3, 2012 at 10:55 Comment(2)
Could you please extend your post explaining how you would link sources and javadoc with this configuration?Impertinence
There are some "how-to" fix sources and javadocs in the comments for this the reported issue:LinkCarpophore
A
13
  1. Right click the project, and choose Properties
  2. Go to Java Build Path-Order and Export.
  3. Tick 'Android Private Libraries'
  4. Click Project, Clean
Aristocratic answered 13/6, 2013 at 9:52 Comment(1)
It helped me and saved my lots of hoursShirline
E
10

For SDK Tools 17 you need to rename your library project's folder from "lib" to "libs" as suggested here. Also have a look at this.

Estelaestele answered 22/3, 2012 at 10:53 Comment(0)
D
5

This site has the simplest solution which worked for me, select the library's checkbox under "Order and Export".

http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

Dealfish answered 23/3, 2012 at 3:59 Comment(2)
this fixed it for me, but instead of "cleaning" the project, I had to restart eclipse.Minnaminnaminnie
@CQM, thanks for the comment, for me restarting Eclipse also worked, while cleaning the project did not.Potaufeu
A
2

I created a quick post in my blog explaining how to fix those problems. It has to do with libraries and a change they made on how Eclipse manages libraries now. You can check it here if you want: http://xrigau.wordpress.com/2012/03/22/fix-some-problems-with-libraries-in-the-adt-17-plugin-10/

Autocephalous answered 22/3, 2012 at 15:13 Comment(0)
L
2

Check order and selects in

Project->Properties->Java build path->Order and Export:

Order and select:

select Google APIs (optional)
select Dependencies
select Android Private Libraries
[-] src
[-] gen

And in the tab libraries:

Dependencies Private libraries (jars in 'libs' directory) Others

Worked for me!

Luthern answered 17/5, 2013 at 18:36 Comment(0)
A
0

Check your gson library in build path. maybe gson libraty aren't not accesible.

Allista answered 22/3, 2012 at 10:50 Comment(0)
N
0

This is an official link provided by Android Devs at Google. Go through the article if you are facing NoClassDefFoundException after updating the plugin and/or SDK

https://plus.google.com/115995639636688350464/posts/38o8ZA6xQK4

Nalchik answered 23/3, 2012 at 3:59 Comment(0)
F
0

download the GSON jar and make as class path

Fireplace answered 11/4, 2012 at 12:7 Comment(0)
C
0

I'm using GSON in a library project, so to solve this issue beyond add the GSON jar on build path, I needed declare it on my Library project manifest like as below:

<uses-library android:name="com.google.gson" />
Clayson answered 19/8, 2013 at 5:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.