2010-12-02 22 views
8

He estado tratando de comenzar a usar la programación de Android desde hace un tiempo. Principalmente soy un desarrollador de .NET sin experiencia en Java durante 8 años (universidad).java.lang.ClassNotFoundException en mi aplicación de Android, pero no tengo idea de por qué

Puedo compilar y ejecutar muestras sin problemas, pero en el momento que intento cambiar el nombre de mi paquete/clase, falla. Creo que he actualizado el comprobado (nombre copiado y pegado, seleccionado con Eclipse) manifiesta y triples sin embargo, siempre falla con 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 
 
Manifiesto está aquí:

<?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>
Clase definición está aquí:


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 

Esta muestra es de AndEngine pero he tenido el mismo problema con todas las muestras modifico. No puedo evitar sentir que me he perdido algo y nada que encontré en mi búsqueda me ayudó.

Cualquier consejo apreciado!

Respuesta

18

Pruebe esto.

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

No necesita el nombre completo de la clase. Además, si está trabajando con Eclipse y cambia el nombre de un paquete, vaya a ProjectClean y deje que se limpie su proyecto, arregle las referencias y demás si algo se rompe.

+1

Bueno, el "." al principio implícitamente antepondrá el nombre completo del paquete. – EboMike

+0

@EboMike: Exactamente. ¿Por qué necesitaría el nombre completo del paquete? Simplemente no lo hace. –

+0

Es cierto que definitivamente se prefiere usar solo el punto. Pero, ¿resolverá esto el problema? El problema es que el cargador de clases no puede encontrar la clase org.anddev.cheesemp.helloandworld.HelloAndEngine, que PARECE estar presente. – EboMike

2

trata de un error en las herramientas androide de eclipse http://code.google.com/p/android/issues/detail?id=2824

para arreglar -> clic derecho sobre el proyecto vaya a herramientas de Android -> Cambiar el nombre de paquete de la aplicación ..

y también comprobar si AndroidManifest.xml actualizado correctamente, en mi caso no fue así, eso debería resolver este problema

Cuestiones relacionadas