解组时找不到类::错误com.facebook.login.Login客户端请求 [英] Error: Class not found when unmarshalling: com.facebook.login.Login Client Request

查看:2035
本文介绍了解组时找不到类::错误com.facebook.login.Login客户端请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我打了登录facebook(简单的登录按钮),当得到这个错误。

我有谷歌,这里阅读其他主题 - 但我看不到任何东西匹配我的问题。

我添加下面Login.java类。

 公共类登录扩展活动{



/ **
 *第一次创建活动时调用。
 * /

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    的setContentView(R.layout.activity_login);
    CallbackManager callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton =(LoginButton)findViewById(R.id.login_button);
    loginButton.setReadPermissions(public_profile,电子邮件,user_friends);

    //其他应用程序特定的专业化

    loginButton.registerCallback(callbackManager,新FacebookCallback< LoginResult>(){


        @覆盖
        公共无效的onSuccess(LoginResult loginResult){

            Log.i(登录,登录:);
          意图I =新的意图(Login.this,MainActivity.class);
            startActivity(ⅰ);
        }

        @覆盖
        公共无效OnCancel的(){
            //应用code

        }

        @覆盖
        公共无效onerror的(FacebookException除外){
            //应用code
            Log.i(错误,错误);
        }


    });
}
}
 

堆栈跟踪:

05-28 20:07:27.550 872-1363 /? E /包裹:类解组时,未发现:com.facebook.login.LoginClient $请求             抛出java.lang.ClassNotFoundException:com.facebook.login.LoginClient $请求             在java.lang.Class.classForName(本机方法)             在java.lang.Class.forName(Class.java:308)             在java.lang.Class.forName(Class.java:272)             在android.os.Parcel.readParcelableCreator(Parcel.java:2275)             在android.os.Parcel.readParcelable(Parcel.java:2239)             在android.os.Parcel.readValue(Parcel.java:2146)             在android.os.Parcel.readArrayMapInternal(Parcel.java:2479)             在android.os.BaseBundle.unparcel(BaseBundle.java:221)             在android.os.BaseBundle.getString(BaseBundle.java:918)             在android.content.Intent.getStringExtra(Intent.java:5378)             在com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1768)             在com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1313)             在com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4522)             在com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4368)             在android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140)             在com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2964)             在android.os.Binder.execTransact(Binder.java:446)              抛出java.lang.ClassNotFoundException:产生的原因没有找到类com.facebook.login.LoginClient $请求的路径:。DexPathList [目录],nativeLibraryDirectories = [/供应商/ lib中/系统/ lib目录] ]             在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)             在java.lang.ClassLoader.loadClass(ClassLoader.java:511)             在java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在java.lang.Class.classForName(本机方法) 在java.lang.Class.forName(Class.java:308) 在java.lang.Class.forName(Class.java:272) 在android.os.Parcel.readParcelableCreator(Parcel.java:2275) 在android.os.Parcel.readParcelable(Parcel.java:2239) 在android.os.Parcel.readValue(Parcel.java:2146) 在android.os.Parcel.readArrayMapInternal(Parcel.java:2479) 在android.os.BaseBundle.unparcel(BaseBundle.java:221) 在android.os.BaseBundle.getString(BaseBundle.java:918) 在android.content.Intent.getStringExtra(Intent.java:5378) 在com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.j            Java的:1768)在com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1313)           在com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4522) 在com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4368) 在android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) 在com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2964) 在android.os.Binder.execTransact(Binder.java:446)              燮pressed:抛出java.lang.ClassNotFoundException:com.facebook.login.LoginClient $请求             在java.lang.Class.classForName(本机方法)             在java.lang.BootClassLoader.findClass(ClassLoader.java:781)             在java.lang.BootClassLoader.loadClass(ClassLoader.java:841)             在java.lang.ClassLoader.loadClass(ClassLoader.java:504)             ... 18更多            java.lang.NoClassDefFoundError的:产生的原因未找到类使用引导类加载器;没有堆栈可用

解决方案

我也有这个问题。然而,我的是一个登录调用回调接受FB烫发后登陆 FBActivity.OnResume 方法中进行。

我只是提出请求到在的onCreate 法的轮廓跟踪系统

  ProfileTracker profileTracker =新ProfileTracker(){
        @覆盖
        保护无效onCurrentProfileChanged(个人oldProfile,简介currentProfile){

            Profile.fetchProfileForCurrentAccessToken();
            如果(currentProfile!= NULL){
                串fbUserId = currentProfile.getId();
                profileUrl = currentProfile.getProfilePictureUri(200,200)的ToString();
                Log.d(FB轮廓,得到了新的线程/更新个人资料+ fbUserId);

                //如果登录已经跳
                GetFacebookProfileAndJump(currentProfile);

            }

        }
    };
 

此外,还要确保你的的OnCreate 超级如下:

  FacebookSdk.sdkInitialize(getApplicationContext());
    mCallbackmanager = CallbackManager.Factory.create();
    super.onCreate(savedInstanceState);

    的setContentView(R.layout.activity_fbauth_);
 

...

I am getting this error when hitting the "Login With Facebook" (Simple login button).

I have Google, and read other topics here - but I can not see any thing matching my issue.

I am adding Login.java class below.

public class Login extends Activity {



/**
 * Called when the activity is first created.
 */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_login);
    CallbackManager callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("public_profile", "email", "user_friends");

    // Other app specific specialization

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {


        @Override
        public void onSuccess(LoginResult loginResult) {

            Log.i("Login", "Logged in: ");
          Intent i = new Intent(Login.this, MainActivity.class);
            startActivity(i);
        }

        @Override
        public void onCancel() {
            // App code

        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.i("Error" , "Error");
        }


    });
}
}

StackTrace:

            05-28 20:07:27.550     872-1363/? E/Parcel﹕ Class not found when unmarshalling: com.facebook.login.LoginClient$Request
            java.lang.ClassNotFoundException: com.facebook.login.LoginClient$Request
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:308)
            at java.lang.Class.forName(Class.java:272)
            at android.os.Parcel.readParcelableCreator(Parcel.java:2275)
            at android.os.Parcel.readParcelable(Parcel.java:2239)
            at android.os.Parcel.readValue(Parcel.java:2146)
            at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
            at android.os.BaseBundle.unparcel(BaseBundle.java:221)
            at android.os.BaseBundle.getString(BaseBundle.java:918)
            at android.content.Intent.getStringExtra(Intent.java:5378)
            at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1768)
            at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1313)
            at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4522)
            at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4368)
            at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140)
            at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2964)
            at android.os.Binder.execTransact(Binder.java:446)
             Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.login.LoginClient$Request" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:308)
            at java.lang.Class.forName(Class.java:272)
            at android.os.Parcel.readParcelableCreator(Parcel.java:2275)
            at android.os.Parcel.readParcelable(Parcel.java:2239)
            at android.os.Parcel.readValue(Parcel.java:2146)
            at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
            at android.os.BaseBundle.unparcel(BaseBundle.java:221)
            at android.os.BaseBundle.getString(BaseBundle.java:918)
            at android.content.Intent.getStringExtra(Intent.java:5378)
            at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.j

           Java:1768)      at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:1313)
          at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:4522)
            at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:4368)
            at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140)
            at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2964)
            at android.os.Binder.execTransact(Binder.java:446)
             Suppressed: java.lang.ClassNotFoundException: com.facebook.login.LoginClient$Request
            at java.lang.Class.classForName(Native Method)
            at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
            at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 18 more
           Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

解决方案

I too had this issue. Mine however was a login call made within the FBActivity.OnResume method for callbacks to login after accepting fb perms.

I simply moved the request into the profile tracker in the onCreate method

    ProfileTracker profileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {

            Profile.fetchProfileForCurrentAccessToken();
            if(currentProfile != null) {
                String fbUserId = currentProfile.getId();
                profileUrl = currentProfile.getProfilePictureUri(200, 200).toString();
                Log.d("FB profile", "got new/updated profile from thread " + fbUserId);

                // jump if logged in already
                GetFacebookProfileAndJump(currentProfile);

            }

        }
    };

Also ensure your OnCreate super is as follows

    FacebookSdk.sdkInitialize(getApplicationContext());
    mCallbackmanager = CallbackManager.Factory.create();
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_fbauth_);

...

这篇关于解组时找不到类::错误com.facebook.login.Login客户端请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆