首页 > 解决方案 > Firebase admin SDK 使用 Java,无法解析

问题描述

我是firebase开发的新手,我试图将一个简单的字符串推送到firebase实时数据库,但不断出错。

我的代码

public static void main(String[] args) {
    try {
        initializeFirebase();
    } catch (IOException e) {
        e.printStackTrace();
    }

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRootRef = database.getReference();
    DatabaseReference condRef = myRootRef.child("condition");

    condRef.setValueAsync("ok", new DatabaseReference.CompletionListener() {
        public void onComplete(DatabaseError arg0, DatabaseReference arg1) {
            System.out.println("success");
        }
    });

}

private static void initializeFirebase() throws IOException {
    FileInputStream serviceAccount = new FileInputStream("adarofirebase.json");

    FirebaseOptions options = new FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl("https://adarofirebase.firebaseio.com/").build();

    FirebaseApp.initializeApp(options);
}

错误堆栈跟踪:

Exception in thread "main" com.google.firebase.database.DatabaseException:
Failed to parse node with class class com.arya.firebase.App$1

我整天都在想办法,但仍然没有运气。提前致谢

标签: javafirebasefirebase-realtime-databasefirebase-admin

解决方案


您正在setValueAsync()使用错误的参数调用该方法:

public ApiFuture<Void> setValueAsync(Object value, Object priority)

第二个参数是priority,它应该是一个 JSON 可解析的值。您正在传递 a CompletionListener,它不是 JSON 可解析的。


推荐阅读