2010-12-02 78 views
8

J'ai essayé de commencer avec la programmation Android depuis un moment maintenant. Je suis principalement un développeur .NET sans expérience Java depuis 8 ans (université).java.lang.ClassNotFoundException sur mon application Android mais je ne sais pas pourquoi

Je peux compiler et exécuter des échantillons sans problème mais au moment où j'essaie de renommer mon paquet/classe, il échoue. Je crois que je l'ai mis à jour le manifeste et triple vérifié (nom et collé Copié, sélectionné avec Eclipse) mais il échoue toujours avec un java.lang.ClassNotFoundException:


12-02 09:12:21.088: ERROR/AndroidRuntime(233): Uncaught handler: thread main exiting due to uncaught exception 
12-02 09:12:21.178: ERROR/AndroidRuntime(233): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.anddev.cheesemp.helloandworld/org.anddev.cheesemp.helloandworld.HelloAndEngine}: java.lang.ClassNotFoundException: org.anddev.cheesemp.helloandworld.HelloAndEngine in loader [email protected] 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.os.Looper.loop(Looper.java:123) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at dalvik.system.NativeStart.main(Native Method) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233): Caused by: java.lang.ClassNotFoundException: org.anddev.cheesemp.helloandworld.HelloAndEngine in loader [email protected] 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 
12-02 09:12:21.178: ERROR/AndroidRuntime(233):  ... 11 more 
 
Manifest est ici:

<?xml version="1.0" encoding="utf-8"?> 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0" package="org.anddev.cheesemp.helloandworld">
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name="org.anddev.cheesemp.helloandworld.HelloAndEngine">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" \>
</manifest>
classe la définition est ici:


package org.anddev.cheesemp.helloandworld; 

import org.anddev.andengine.engine.Engine; 
import org.anddev.andengine.engine.camera.Camera; 
import org.anddev.andengine.engine.options.EngineOptions; 
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation; 
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy; 
import org.anddev.andengine.entity.scene.Scene; 
import org.anddev.andengine.entity.scene.background.ColorBackground; 
import org.anddev.andengine.entity.text.Text; 
import org.anddev.andengine.entity.util.FPSLogger; 
import org.anddev.andengine.opengl.font.Font; 
import org.anddev.andengine.opengl.texture.Texture; 
import org.anddev.andengine.opengl.texture.TextureOptions; 
import org.anddev.andengine.ui.activity.BaseGameActivity; 
import org.anddev.andengine.util.HorizontalAlign; 

import android.graphics.Color; 
import android.graphics.Typeface; 

/** 
* @author Nicolas Gramlich 
* @since 11:54:51 - 03.04.2010 
*/ 
public class HelloAndEngine extends BaseGameActivity 

Cet exemple provient de AndEngine mais j'ai eu le même problème avec chaque échantillon que je modifie. Je ne peux pas m'empêcher de penser que j'ai raté quelque chose et rien de ce que j'ai trouvé de la recherche a aidé.

Un conseil apprécié!

Répondre

18

Essayez ceci.

<activity android:label="@string/app_name" android:name=".HelloAndEngine"> 

Vous n'avez pas besoin du nom de classe complet. En outre, si vous travaillez avec Eclipse et renommez un paquet, rendez-vous au ProjectClean et laissez-le nettoyer votre projet, en corrigeant les références et ainsi de suite si quelque chose est cassé.

+1

Eh bien, le "." au début, ajoutera implicitement le nom complet du paquet. – EboMike

+0

@EboMike: Exactement. Pourquoi aurait-il besoin du nom complet du paquet? Il ne le fait tout simplement pas. –

+0

Certes, il est certainement préférable d'utiliser simplement la période. Mais cela va-t-il résoudre le problème? Le problème est que le chargeur de classe ne trouve pas la classe org.anddev.cheesemp.helloandworld.HelloAndEngine, qui semble être présente. – EboMike

2

Ce bogue dans Eclipse outils Android http://code.google.com/p/android/issues/detail?id=2824

Pour résoudre -> Faites un clic droit sur le projet allez dans Android -> Renommer package d'application ..

Et aussi vérifier si AndroidManifest.xml mis à jour correctement, dans mon cas, il n'a pas, cela devrait résoudre ce problème