2013-02-20 72 views
0

我得到一個NoClassDefFoundError的,由於這行代碼:的Android - NoClassDefFoundError的

adapter = new SocialAuthAdapter(new ResponseListener()); 

我和我的ResponseListener()方法想它也許一個問題,但我找不到什麼毛病。下面是代碼:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Adapter initialization 
    adapter = new SocialAuthAdapter(new ResponseListener()); 

    listview = (ListView) findViewById(R.id.listview); 
    listview.setAdapter(new CustomAdapter(this, adapter)); 

    // Welcome Message 
    TextView textview = (TextView) findViewById(R.id.text); 
    textview.setText("Use SocialAuth by creating your own UI."); 
    textview.setTextColor(Color.WHITE); 
    textview.setGravity(Gravity.CENTER); 
    textview.setPadding(0, 30, 0, 0); 
} 

// To receive the response after authentication 
private final class ResponseListener implements DialogListener { 
    @Override 
    public void onComplete(Bundle values) { 
     Log.d("Custom-UI", "Successful"); 

     // Changing Sign In Text to Sign Out 
     // Code to refresh Single ListView Item : You can remove it for your 
     // app 
     View v = listview.getChildAt(pos 
       - listview.getFirstVisiblePosition()); 
     TextView pText = (TextView) v.findViewById(R.id.signstatus); 
     pText.setText("Sign Out"); 

     // Get the provider 
     final String providerName = values 
       .getString(SocialAuthAdapter.PROVIDER); 
     Log.d("Custom-UI", "providername = " + providerName); 

     int res = getResources().getIdentifier(providerName + "_array", 
       "array", CustomUI.this.getPackageName()); 

     AlertDialog.Builder builder = new AlertDialog.Builder(CustomUI.this); 
     builder.setTitle("Select Options"); 
     builder.setCancelable(true); 
     builder.setIcon(android.R.drawable.ic_menu_more); 

     builder.setSingleChoiceItems(new ArrayAdapter<String>(
       CustomUI.this, R.layout.provider_options, getResources() 
         .getStringArray(res)), 0, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int item) { 

         Events(item, providerName); 
        } 
       }); 
     dialog = builder.create(); 
     dialog.show(); 
    } 

    @Override 
    public void onError(SocialAuthError error) { 
     Log.d("Custom-UI", "Error"); 
     error.printStackTrace(); 
    } 

    @Override 
    public void onCancel() { 
     Log.d("Custom-UI", "Cancelled"); 
    } 

    @Override 
    public void onBack() { 
     Log.d("Custom-UI", "Dialog Closed by pressing Back Key"); 

    } 
} 

這裏是logcat的:

02-20 16:21:44.562: E/AndroidRuntime(932): FATAL EXCEPTION: main 
02-20 16:21:44.562: E/AndroidRuntime(932): java.lang.NoClassDefFoundError: org.brickred.socialauth.android.SocialAuthAdapter 
02-20 16:21:44.562: E/AndroidRuntime(932): at com.socialauth.customui.CustomUI.onCreate(CustomUI.java:70) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.Activity.performCreate(Activity.java:5104) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.os.Looper.loop(Looper.java:137) 
02-20 16:21:44.562: E/AndroidRuntime(932): at android.app.ActivityThread.main(ActivityThread.java:5039) 
02-20 16:21:44.562: E/AndroidRuntime(932): at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 16:21:44.562: E/AndroidRuntime(932): at java.lang.reflect.Method.invoke(Method.java:511) 
02-20 16:21:44.562: E/AndroidRuntime(932): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
02-20 16:21:44.562: E/AndroidRuntime(932): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
02-20 16:21:44.562: E/AndroidRuntime(932): at dalvik.system.NativeStart.main(Native Method) 

任何幫助將不勝感激。

+0

你的classpath中是否有一個jar包含這個'org.brickred.socialauth.android.SocialAuthAdapter'類? – 2013-02-20 16:51:27

+0

也許這可以幫助http://code.google.com/p/socialauth-android/issues/detail?id=4 – 2013-02-20 16:52:27

+0

我已經看到了該票。我在我的libs文件夾中有最新的jar文件。 – user268397 2013-02-20 18:27:53

回答

1

如果DVM在運行時無法找到類文件,則此錯誤與此問題有關。這意味着它不包含在你的apk文件中。

我假設包含您正在使用的SocialAuthAdapter類的jar文件包含在lib文件夾中,而不是libs文件夾。所以移動jar文件到libs文件夾,然後重新編譯apk文件。

相關問題