17

EDIT: This problem has not already been resolved in the other suggested SO question

I had a fully working app on the market for over a year, with very few crash reports. Then recently I changed my app into a library, so that it could be included within multiple different "wrapper" projects. This was so that I could easily make different version - free, paid, non-google markets, with/without in-app purchasing etc etc.

The new "library+wrapper" app appeared to work fine. I could run it multiple times, without error. But then a day later (when presumably the OS had closed some or all of the app's activities) I tried to run it and it reported

Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass

The class it failed to find is the first class that runs when the program starts up, MyGameApplicationClass - which extends Application. This class is part of the library.

I suspect something goofy in one of the two manifest files.

The manifest of the wrapper project contains the lines...

<application android:icon="@drawable/mygame_icon"
    android:screenOrientation="portrait" android:label="My Game Name"
    android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">

Any ideas what could have gone wrong?

EDIT: The library was referenced "the correct way" as defined by yorkw's answer to this SO question.

EDIT: I can not repeat the crash at the moment :-( I don't know what it is the OS does when the app is not used for a day or two.

Community
  • 1
  • 1
Mick
  • 8,284
  • 22
  • 81
  • 173
  • The symptoms of the problem in the other question are not quite the same. Also the ticked answer has 3 down votes. – Mick Jul 31 '13 at 09:03
  • Did you tried with **android:name="MyGameApplicationClass"**? – Niranj Patel Aug 03 '13 at 07:22
  • Have you seen the accepted answer to this question: http://stackoverflow.com/questions/4880489/android-classnotfoundexception ? Can you post more information - e.g. does it fail consistently now ? – IanB Aug 03 '13 at 19:09

13 Answers13

18

There are two possibilities. Either you, like me, have a spelling error in your manifest file. Have a co-worker or friend read it to make sure the name is correct. Or you have not referenced the project correctly.

The official document describes how to properly link projects in its documentation.

Why it would first seem to work and later stop working is a bit of a mystery. However, I guess that the VM might still have had the necessary references ready to resolve the classes in the library just fine. A restart of the VM removed all those references and trying to resolve them was unsuccessful.

Update: Regarding the edits in the OP: As you confirm that you have correctly referenced the other project, you can check if the project is included in APK, just to be sure. You can rename and open an APK as any other archive (.rar works fine for me). Sometimes, it happened to me, the project is not correctly included in the APK. A cleaning of your workspace usually remedies the problem and so could a restart of your IDE depending on what you are using. To manually conduct a clean in Eclipse for example, use Project->Clean... or try Android Tools->Fix Project Properties by right-clicking on your project.

As you seem to also have fixed the problem by restarting your device, it could be that the libraries were linked incorrectly. A problem that I have never seen myself but as a very common quote says: "Have you tried turning it off and on again?".

Eric Tobias
  • 3,225
  • 4
  • 32
  • 50
17

For Android Studio:

Build --> Clean Project

Fixed issue.

Community
  • 1
  • 1
AskQ
  • 4,215
  • 7
  • 34
  • 61
5

Have you tried to make a new subclass of MyGameApplicationClass in your 'main' project and set it in the manifest as Application class?

sashomasho
  • 353
  • 2
  • 6
  • This is what I would try and also because you use the fully qualified name to reference your application class make sure you haven't define the package attribut of your manifest node in your Manifest file – Gomino Aug 08 '13 at 08:58
4

I had a slew of bugs with Android Studio 3.0 Canary 4 and the way I fixed them was by editing the AndroidManifest.xml by adding in some jibberish to the application name. Then, I clicked build. Obviously, a whole mess of new error messages appeared. I changed the name back to what it should be, built the app, and it just ran.

Sometimes, I just don't know...

EDIT: Just ran into this issue on Android Studio 3.0 Canary 4 on my laptop when switching over. I again went through the same process of changing AndroidManifest.xml file to contain a typo, building, and changing back. That didn't work.

I then noticed that instant run was still enabled. Going into settings (by clicking command + , (comma key)) and typing "instant run", I was able to disable instant run, built the app, and the error of class not found went away.

Summary of Steps to Fix [FOR ME]

  1. Invalidate cache / restart
  2. Clean the project
  3. Manually delete the build folder (need to be in project view for this one)
  4. Make an intentionally errant edit to your AndroidManifest.xml file, build the app, observe the errors, remove the errant edit and build again
  5. Disable instant run

Again, I don't mean to insinuate that this will fix everyone's error, but I have now used some combination of these steps on two different machines (MacOS Sierra) and it has been resolved for me. Hope it helps.

technoplato
  • 3,293
  • 21
  • 33
  • Disabling Instant Run fixed it for me – saintjab Jun 20 '17 at 20:03
  • me too. I would advise all to first "Clean and Build" the Project, if it doesnt work then "disable the Instant Run". – BlueLeaf Sep 02 '17 at 11:53
  • Building the apk with Android Studio but then Installing with `adb install` worked for me. To be clear, I needed this to test an "app update" feature, not permanently – wamfous Sep 25 '18 at 15:11
2

In my case, application id and package were mismatched. This should be same as presented in following images...

AndroidManifest.xml

enter image description here

app/build.gradle

enter image description here

In this case you can see, applicationId and package both are same that is com.mycompany.mygamelibrary

User
  • 4,023
  • 4
  • 37
  • 63
1

May be its a Build Path Configuration problem.I did the following to solve the issue.

1.Right click on your project and go to Java Build Path.

2.Click on Order and Export tab.

3.Check Android Private Libraries and other 3rd part libraries if you have added.

4.Press ok and clean the project. I hope it will solve the issue.

Spring Breaker
  • 8,233
  • 3
  • 36
  • 60
  • "Android Private Libraries" was already checked in both the library and wrapper projects. – Mick Jul 31 '13 at 08:55
1

Once I had the same error message, but maybe the cause isn't the same.

I did a code and worked for a while, then I wanted to improve it and got the same error and I couldn't run it.

I could fix the problem with

  • the correct Build Path order (as I can see you've already did this)
  • I check on the Order and Export tab the android-suppor-v4.jar
  • and the key was the Android SDK Managert->Upgrade everything and (next) Eclipse->Help->Check for updates.

After I upgraded to the latest android plugin and SDK my app compiled and ran again.

I hope this will help you!

csikos.balint
  • 1,107
  • 2
  • 10
  • 25
1

I'm not very sure about this but it might be that your system's debug.keystore license validity has expired as it is valid for only 365 days. You just need to delete the debug.keystore from your computer. The debug.keystore will be generated automatically by Eclipse when you compile your Android App.

arshu
  • 11,805
  • 3
  • 23
  • 21
  • I have always put 1000 years duration for every keystore I've ever made, but thanks for the suggestion. – Mick Aug 07 '13 at 15:33
1

Same message seen ... this time it turned out to be different output folders for MyApp/gen and MyApp/src in the Build Path (caused by Maven integration).

Unchecking "Allow output folders for source folders" solved the problem.

df778899
  • 10,703
  • 1
  • 24
  • 36
  • Thank you very much!! I was having the same problem and nothing was making it work. Your solution came in handy! – GPrimola Oct 21 '14 at 12:35
0

I had this issue in an Android application that needed an Application class which was created in wrong path inside the Android Studio project. When I moved the class file to the correct package, it was fixed.

0

This all Process work for me to solve application class Exception.

Step 1: Open Run(window+R) Search -> Prefetch Remove all file (Some file not Delete)

Step 2: Open Run(window+R) Search -> %temp% Remove all file (Some File not Delete)

Step 3: Open Android Studio -> Build -> Clean Project

OR

Select File > Invalidate Caches / Restart > Invalidate and Restart from Android Studio toolbar.

OR

Close and reopen Android project.

OR

Restart System

0

I ran into this issue several times and both times it seemed to be caused by some instant run feature.

In my case, deleting the application from the device and then installing it from Android Studio again resolved the issue.

Nebel22
  • 478
  • 8
  • 17
0

I ran into this problem today. The project runs well for over a year but today it reports this issue, and cannot debug on my testing device.

I fixed it by updating to latest gradle version. Hope this can solve your problem.

Hexise
  • 1,520
  • 15
  • 20