Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - Unable to resolve superclass

I have dug out an old android project that I was working on a few years ago and loaded it into a new eclipse install (latest ADT etc).

The project all compiles ok (after some minor tweaking), and the app starts fine, however, when i press a button to start the main activity i get the following stack trace:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.tmm.android.activities.GameActivity
    at com.tmm.android.activities.StartActivity.onClick(StartActivity.java:53)
    at android.view.View.performClick(View.java:2408)

Now the class in question (GameActivity) is one of my classes that is in the app, so I know thats not the problem - but I noticed a warning right at the top of the logcat:

Unable to resolve superclass of Lcom/tmm/android/activities/GameActivity; (33)
Link of class 'Lcom/tmm/android/activities/GameActivity;' failed

My class GameActivity extends another class that is part of a third-party jar that i have included in the project (included it in the 'libs' directory, and added it to the project build path in eclipse).

Can anyone advise what I might have done wrong, or anything that has changed in the ADT/etc that I might need to take account of (it was working fine when i last had it in Eclipse)

Cheers

like image 731
rhinds Avatar asked Sep 04 '12 19:09

rhinds


2 Answers

I had the same problem. I had a custom View class which called methods in an imported library. I was also getting the "Unable to resolve superclass" error when the app was trying to create my view (while trying to inflate a layout that referred to that custom View).

I resolved my problem, and I had a play around to determine what I think is the definitive answer.

(As at writing, I am using the Eclipse Android Tools R21).

If you are using an external jar

  • Copy it to your project's "libs" folder. The Android Tools should do the rest.

If the library you want to use is a separate project in your workspace.

  • In your library project: go into Properties->Android and check the "Is Library" checkbox.
  • In your app project: go into to Properties->Android and add the library project in the same section there (click "Add.."). Don't check "Is Library" here!

Some answers to this question say you need to go to Properties->Java Build Path->Projects and add the library project there. For normal Java projects you would do that, but it appears the Android Tools don't need or use that.

Finally, you will probably want to make sure the lib is included in your exported app

  • Go to Properties->Java Build Path->Order and Export and make sure the library is checked.
like image 65
Paul LeBeau Avatar answered Sep 20 '22 14:09

Paul LeBeau


Ok, was a simple problem in the end..

Having added the 3rd party library to the build path, the export tab wasnt defaulted to export the jar (eclipse normal behaviour) - so the jar wasnt being included in the deployment..

got past that problem ok..

like image 10
rhinds Avatar answered Sep 24 '22 14:09

rhinds