为了账号安全,请及时绑定邮箱和手机立即绑定

java.lang.NoClassDefFoundError:解析失败:

java.lang.NoClassDefFoundError:解析失败:

ABOUTYOU 2023-01-05 10:07:31

我正在尝试将 Firebase 用于简单的 CRUD android 应用程序,但是在实例化 Firebase 数据库引用时,我在运行时遇到以下异常:


java.lang.RuntimeException: Uncaught exception in Firebase Database runloop (3.0.0). Please report to firebase-database-client@google.com

    at com.google.firebase.database.android.AndroidPlatform$1$1.run(com.google.firebase:firebase-database@@16.1.0:98)

    at android.os.Handler.handleCallback(Handler.java:873)

    at android.os.Handler.dispatchMessage(Handler.java:99)

    ....

    ....

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/FirebaseApp$IdTokenListener;

    ....

    ....

    at com.satwick.employeecrud.MainActivity.onCreate(MainActivity.java:76)

我浏览了 StackOverflow,虽然在 Firebase 中有很多 NoClassDefFoundError 案例,但没有一个是关于IdTokenListener. 我主要意识到这可能是在设置 Firebase 数据库时缺少某些步骤的错误。所以我重新检查了所有步骤:

  1. 确保我的应用已在 Firebase 项目中注册,并使用正确的 SHA1 签名。

  2. google-services.json 包含在我的应用程序目录中。

  3. firebase 已正确加载到应用程序和项目的 gradle 文件中。(我现在可以完成电话号码认证,所以我很确定。)

在 onCreate() 方法中:

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        // Initialize Firebase Auth

        mFirebaseAuth = FirebaseAuth.getInstance();

        mFirebaseUser = mFirebaseAuth.getCurrentUser();


        if (mFirebaseUser == null) {

            List<AuthUI.IdpConfig> providers = Arrays.asList(new AuthUI.IdpConfig.PhoneBuilder().build());


            startActivityForResult(

                    AuthUI.getInstance()

                            .createSignInIntentBuilder()

                            .setAvailableProviders(providers)

                            .build(),

                    RC_SIGN_IN);

        } else {

            mUsername = mFirebaseUser.getDisplayName();

        }


        // MainActivity.java:76 The following line causes the exception.

        mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); 

    }

这是 Firebase 的错误吗?还是我做错了什么?请帮忙。

另外,我不知道这是否相关,但我有两个应用程序在同一个 Firebase 项目中注册,具有相同的签名密钥(Android Studio 的默认 SHA1。)


查看完整描述

2 回答

?
冉冉说

TA贡献1593条经验 获得超0个赞

我在 中使用了一些不需要的库build.gradle,因此清除了以下 Firebase 导入的混乱情况:


// Firebase

implementation 'com.google.firebase:firebase-core:16.0.9'

implementation 'com.google.firebase:firebase-auth:17.0.0'


// Firebase UI

implementation 'com.firebaseui:firebase-ui-auth:5.0.0'

implementation 'com.firebaseui:firebase-ui-database:5.0.0'

因此,我尝试将 firebase-ui 的版本从 4.3.1 -> 5.0.0 更新,并且成功了。


查看完整回答
反对 回复 2023-01-05
?
回首忆惘然

TA贡献1622条经验 获得超10个赞

我尝试将我的版本从

实施 'com.firebaseui:firebase-ui-auth: 4.3.1 '

实施 'com.firebaseui:firebase-ui-auth: 4.3.0 '

实施 'com.google.firebase:firebase-database: 19.2.0 '

实施 'com.google.firebase:firebase-database: 16.0.4 '

它奏效了


查看完整回答
反对 回复 2023-01-05

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信