Firebase Admin NoClassDefFoundError: FirebaseOptions $ Builder

Я использую это:

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); 

Однако приложение вылетает с помощью java.lang.NoClassDefFoundError for FirebaseOptions$Builder

Мой build.gradle :

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

Я использую 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) 

У меня есть firebase_key.json в корне приложения.

Что вызывает это?

Проблема оказалась в том, что я использовал эту команду для сборки:

 gradlew clean install 

Однако Jar, сгенерированный этим, не содержит зависимостей . И SDK Firebase Admin – это зависимость.

Итак, что я сделал, я использовал shadowJar , который генерирует Jar, который содержит зависимости. В отличие от gradlew clean install .

Затем в Procfile я установил его в Jar, который генерирует shadowJar. Единственная проблема, которую я вижу, – теперь я должен пойти в IntelliJ и запустить shadowJar оттуда, так как нет никакой команды запускать ее из командной строки.

Надеюсь это поможет

Вы не устанавливаете правильный импорт в градиенте для параметров firebase, нет необходимости в пакете администрирования, вам нужно ядро:

Вместо compile 'com.google.firebase:firebase-admin:4.1.1'

Используйте compile "com.google.firebase:firebase-core:10.0.1"

Intereting Posts