Administrador de Firebase NoClassDefFoundError: FirebaseOptions $ Builder

Estoy usando esto:

FileInputStream serviceAccount; try { serviceAccount = new FileInputStream("firebase_key.json"); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); return; } System.out.println("Reached here!"); FirebaseOptions options = new FirebaseOptions.Builder() .setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) .setDatabaseUrl("https://*.firebaseio.com/") .build(); FirebaseApp.initializeApp(options); 

Sin embargo, la aplicación se bloquea con un java.lang.NoClassDefFoundError for FirebaseOptions$Builder

Mi build.gradle :

 dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' compile 'com.google.firebase:firebase-admin:4.1.1' } 

Estoy usando IntelliJ.

Logcat:

  Exception in thread "main" java.lang.NoClassDefFoundError: com/google/firebase/FirebaseOptions$Builder 10:57:43 AM web.1 | at com.x.*.TokenGenerator.main(TokenGenerator.java:26) 10:57:43 AM web.1 | Caused by: java.lang.ClassNotFoundException: com.google.firebase.FirebaseOptions$Builder 10:57:43 AM web.1 | at java.net.URLClassLoader.findClass(Unknown Source) 10:57:43 AM web.1 | at java.lang.ClassLoader.loadClass(Unknown Source) 10:57:43 AM web.1 | at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 10:57:43 AM web.1 | at java.lang.ClassLoader.loadClass(Unknown Source) 

Tengo mi firebase_key.json en la raíz de la aplicación.

¿Qué está causando esto?

El problema resultó ser que estaba usando este comando para construir:

 gradlew clean install 

Sin embargo, el frasco generado por ese no contiene las dependencias . Y el Firebase Admin SDK es una dependencia.

Así que lo que hice fue usar shadowJar , que genera un Jar que contiene dependencias. A diferencia de gradlew clean install .

Luego, en el Procfile, lo pongo en el Jar que la sombraJar genera. El único problema que veo tener es, ahora tengo que ir a IntelliJ y ejecutar el shadowJar desde allí, ya que no parece ningún comando para ejecutarlo desde la línea de comandos.

Espero que esto ayude

No estás configurando la importación correcta en el gradle para las opciones de firebase, no hay necesidad de admin package, necesitas el core:

En lugar de compile 'com.google.firebase:firebase-admin:4.1.1'

Utilice la compile "com.google.firebase:firebase-core:10.0.1"

  • Cómo comprobar si un usuario está iniciando sesión por primera vez con Firebase Authentification
  • Utilizar DB de Firebase con DB local
  • ¿Cómo almacenar datos en base de datos en tiempo real en firebase durante el registro de usuario?
  • Error "java.lang.StackOverflowError:" al intentar guardar el objeto en base de datos Firebase
  • Cómo comprobar si la tarea de escritura tuvo éxito en Firebase
  • Firebase configuración de configuración remota por userId
  • Obtener 'No se puede resolver el método' addOnCompletionListener () '...' al intentar colocar algún código dentro del método onClick () de builder.setPositiveButton
  • OAuth2 problemas después de actualizar firebase
  • Comportamiento incoherente de la base de datos en tiempo real de Firebase en modo sin conexión
  • ¿Cómo puedo solucionar el error de Android Firebase "Default FirebaseApp no ​​se inicializa en este proceso"?
  • Android: ¿Realmente necesito la autenticación personalizada de Firebase?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.