GCM: java.lang.noclassdeffounderror: com.google.android.gcm.GCMRegistrar

Estoy tratando de registrar un dispositivo en GCM usando el siguiente código:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    GCMRegistrar.checkDevice(this);
    // the following function can be removed when deploying the app
    GCMRegistrar.checkManifest(this);

    final String regId = GCMRegistrar.getRegistrationId(this);
    if (regId.equals("")) {
      GCMRegistrar.register(this, SENDER_ID);
    } else {
      Log.v(TAG, "Already registered");
    } 

He importado import com.google.android.gcm.GCMRegistrar;
y también agregué GCM.jar a mi ruta de compilación en Eclipse que obtuve a través de la descarga de SDK

Por favor, ayuda!

preguntado el 30 de junio de 12 a las 13:06

Debe colocar el jar en su carpeta libs (no lib) y verificar que esté en la lista de "dependencias de Android". A veces descubrí que reorganizar el orden de las dependencias cambia el comportamiento, por lo que también puede intentarlo:

¡gracias, copié el archivo jar en la carpeta libs y parece funcionar! -

@Shushu: el jar está en mi carpeta libs, pero no en las dependencias. Entonces, ¿cómo agregarlo en las dependencias? -

10 Respuestas

En el ADT actualizado (por encima de ADT 17), debe colocar archivos jar dentro libs carpeta y no lib. Así que asegúrate de poner gcm.jar archivo dentro libs y no lib carpeta.

Respondido 09 ago 12, 05:08

mi gcm.jar está dentro de libs y he configurado la ruta aún sin éxito - Pasión

Simplemente vaya a las propiedades del proyecto -> ruta de compilación de Java -> "ordenar y exportar" ahora marque el archivo jar "GCM.jar" que ha agregado

Respondido 05 Jul 12, 13:07

My gcm.jar ya estaba en libs, por lo que no fue un problema de nombre de carpeta para mí ...

Tuve que ir a Right Click > Build Path > Configure Build path... para el proyecto en cuestión y eliminé lo siguiente:

  • Cualquier archivo persistente fuera de una carpeta/paquete
  • Android Private Libraries
  • Cualquier paquete con la palabra "referencia" en ellos (es posible que no tenga uno)

Es posible que obtenga muchos "errores" en su proyecto, así que reinicie Eclipse y déjelo limpiar. Una vez que se limpie, no tendrá errores. Ejecute su proyecto y viola.

Gracias a DLew para esta respuesta.

contestado el 30 de mayo de 13 a las 14:05

¡Muchas gracias! esta respuesta puede haber tenido cero votos y haber estado bastante abajo en la página, ¡pero es la que funcionó cuando todas las demás fallaron para mí! - Bltucker

Tu respuesta es excelente y funcionó para mí. Gracias a Jackson y BLT también - Sakthimuthiah

Hacer una carpeta libs en la carpeta de su proyecto y coloque el gcm.jar en él. Luego agréguelo a su ruta de clase usando agregar frascos externos in configurar la ruta de construcción .

Respondido 07 ago 12, 21:08

Tienes que poner el archivo gcm.jar dentro libs, luego ve al proyecto Propiedades> Ruta de compilación Java> Bibliotecas y añádelo a tu ruta usando Agregar archivos JAR externos ..., después en Pedido y Exportación revisas gcm.jar y presionas OK. Eso debería funcionar

contestado el 21 de mayo de 13 a las 23:05

Asegúrese de que el archivo jar de gcm esté en la carpeta libs correcta y que se haya agregado a la ruta de compilación de Java en las propiedades de su proyecto.

Respondido 03 Jul 12, 10:07

Tuve el mismo problema, después de actualizar SDK en mi proyecto. me ayudó: simplemente "agregué biblioteca de soporte" en "herramientas de Android". Espero que esto ayude a alguien más.

Respondido el 11 de junio de 13 a las 08:06

Yo también tengo el mismo problema, después de agregar android-support-v4.jar y gcm.jar en mi carpeta libs ningún problema encontró su trabajo como un encanto

Muchas Gracias

contestado el 02 de mayo de 14 a las 05:05

El campo SENDER_ID debe ser el ID del proyecto desde el momento en que creó su proyecto de API de Google. Lee el principio de esto: http://developer.android.com/guide/google/gcm/gs.html#libs

TAG también debe ser una cadena -> ""nombre de etiqueta"

Respondido 03 Jul 12, 02:07

Hola, está utilizando implementaciones antiguas de GCM, use nuevas implementaciones disponibles en https://developers.google.com/cloud-messaging/android/start

Respondido el 05 de enero de 16 a las 10:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.