twitter4j => AndroidRuntime(446): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken

13,616

Solution 1

You need to change your Folder name from lib to libs as you have updated ADT 17.

Checkout this Article for in detail information on this topic.

Solution 2

In case someone is using ADT 18, I did not have a lib folder at all, I was using Project, Properties, Java Build Path, Libraries tab exclusively. To resolve this issue, I created a libs folder within my project, copied my external jars to this folder, and then removed the references in the Libraries tab. The project rebuilt and worked!

Share:
13,616
someone_ smiley
Author by

someone_ smiley

Updated on June 11, 2022

Comments

  • someone_ smiley
    someone_ smiley almost 2 years

    I am trying to use twitter4j for my app to connect and post to twitter. I am following this tutorial. I have downloaded the example project from here and try to run it on android 2.3.3. I am sure that i have modified Constants.java file correctly according to my twitter developer website. In TwitterUtils.java i have enter OAUTH_TOKEN and OAUTH_TOKEN_SECRET also. but after running it, i got following error messages :

    > E/dalvikvm(374): Could not find class 'twitter4j.http.AccessToken', referenced from method com.ecs.android.sample.twitter.TwitterUtils.isAuthenticated
    
    >W/dalvikvm(374): VFY: unable to resolve new-instance 67 (Ltwitter4j/http/AccessToken;) in Lcom/ecs/android/sample/twitter/TwitterUtils;
    
    >D/dalvikvm(374): VFY: replacing opcode 0x22 at 0x0010
    
    >D/dalvikvm(374): VFY: dead code 0x0012-002f in Lcom/ecs/android/sample/twitter/TwitterUtils;.isAuthenticated (Landroid/content/SharedPreferences;)Z
    
    >E/dalvikvm(374): Could not find class 'twitter4j.http.AccessToken', referenced from method com.ecs.android.sample.twitter.TwitterUtils.sendTweet
    
    >W/dalvikvm(374): VFY: unable to resolve new-instance 67 (Ltwitter4j/http/AccessToken;) in Lcom/ecs/android/sample/twitter/TwitterUtils;
    
    >D/dalvikvm(374): VFY: replacing opcode 0x22 at 0x0010
    
    >D/dalvikvm(374): VFY: dead code 0x0012-002b in Lcom/ecs/android/sample/twitter/TwitterUtils;.sendTweet (Landroid/content/SharedPreferences;Ljava/lang/String;)V
    
    >D/AndroidRuntime(374): Shutting down VM
    
    >W/dalvikvm(374): threadid=1: thread exiting with uncaught exception (group=0x40015560)
    
    >E/AndroidRuntime(374): FATAL EXCEPTION: main
    
    >E/AndroidRuntime(374): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken
    
    >E/AndroidRuntime(374):     at com.ecs.android.sample.twitter.TwitterUtils.isAuthenticated(TwitterUtils.java:18)
    
    >E/AndroidRuntime(374):     at com.ecs.android.sample.twitter.AndroidTwitterSample.updateLoginStatus(AndroidTwitterSample.java:72)
    
    >E/AndroidRuntime(374):     at com.ecs.android.sample.twitter.AndroidTwitterSample.onResume(AndroidTwitterSample.java:68)
    
    >E/AndroidRuntime(374):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
    
    >E/AndroidRuntime(374):     at android.app.Activity.performResume(Activity.java:3832)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    
    >E/AndroidRuntime(374):     at android.os.Handler.dispatchMessage(Handler.java:99)
    
    >E/AndroidRuntime(374):     at android.os.Looper.loop(Looper.java:130)
    
    >E/AndroidRuntime(374):     at android.app.ActivityThread.main(ActivityThread.java:3683)
    
    >E/AndroidRuntime(374):     at java.lang.reflect.Method.invokeNative(Native Method)
    
    >E/AndroidRuntime(374):     at java.lang.reflect.Method.invoke(Method.java:507)
    
    >E/AndroidRuntime(374):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    
    >E/AndroidRuntime(374):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    
    >E/AndroidRuntime(374):     at dalvik.system.NativeStart.main(Native Method)
    

    am not sure if i am wrong, in Constant.java, i haven't change anything in

    public static final String REQUEST_URL = "https://api.twitter.com/oauth/request_token";
    
    public static final String ACCESS_URL = "https://api.twitter.com/oauth/access_token";
    
    public static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize";
    
    public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-twitter";
    
    public static final String OAUTH_CALLBACK_HOST = "callback";
    
    public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST;
    

    I have tried changing "callback" with "http://www.MyWebsite.com" Please advice how can I correct these problems.