2017-02-14 12 views
8

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:私はIntelliJのを使用してい

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

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を持っています。

この原因は何ですか?

+0

あなたのlogcatを追加してください –

+0

それは必要ではないと思いました。追加された –

答えて

4

問題は、私が構築するために、このコマンドを使用していたことが判明:

gradlew clean install 

しかし、それによって生成されたJARが依存関係が含まれていません。 Firebase Admin SDKは依存関係です。

私がしたことは、依存関係を含むJarを生成するshadowJarを使用したことです。 gradlew clean installとは異なります。

次に、ProcfileでshadowJarが生成するJarに設定します。私が知る唯一の問題は、コマンドラインからコマンドを実行するコマンドがないので、IntelliJに行ってそこからshadowJarを実行する必要があることです。

これはあなたがfirebaseオプション用のGradleを右インポートを設定していない

1

、管理パッケージのための必要はありません助け、あなたがコアを必要とする希望:

代わりcompile 'com.google.firebase:firebase-admin:4.1.1'

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

関連する問題