Firebasepipe理员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在应用程序的根。

这是什么原因造成的?

Solutions Collecting From Web of "Firebasepipe理员NoClassDefFoundError:FirebaseOptions $ Builder"

问题原来是我使用这个命令来build立:

 gradlew clean install 

但是,由此生成的Jar不包含依赖关系 。 而Firebase Admin SDK是一个依赖项。

所以我所做的是我使用了shadowJar ,它生成一个包含依赖关系的Jar。 不像gradlew clean install

然后,在Procfile中,我将它设置为shadowJar生成的Jar。 我看到的唯一的问题是,现在我必须去IntelliJ并从那里运行shadowJar,因为似乎没有命令从命令行运行它。

希望这可以帮助

你没有在gradle上设置正确的firebase选项导入,不需要pipe理包,你需要核心:

而不是compile 'com.google.firebase:firebase-admin:4.1.1'

使用compile "com.google.firebase:firebase-core:10.0.1"