Android Twitter4j giving error NoClassDefFoundError: twitter4j.TwitterFactory

Go To StackoverFlow.com

4

I am making an app that communicates with Twitter to post a tweet. My problem is that when compile my code, I get the error message:

NoClassDefFoundError: twitter4j.TwitterFactory

Here is the code that post's the tweet via an onClickListener:

post.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Twitter twitter = new TwitterFactory().getInstance();  
            AccessToken a = new AccessToken("****", "****");
            twitter.setOAuthConsumer("****", "****");
            twitter.setOAuthAccessToken(a); 
            try {
                twitter.updateStatus("If you're reading this on Twitter, it worked!");
            } catch (TwitterException e) {
                e.printStackTrace();
            }   
        }
    });

Here is what I got in my logcat:

04-04 10:27:51.330: E/AndroidRuntime(12547): FATAL EXCEPTION: main
04-04 10:27:51.330: E/AndroidRuntime(12547): java.lang.NoClassDefFoundError: twitter4j.TwitterFactory
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.bintuu.updater.TwitterClass$3.onClick(TwitterClass.java:107)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.view.View.performClick(View.java:2485)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.view.View$PerformClick.run(View.java:9080)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Handler.handleCallback(Handler.java:587)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Looper.loop(Looper.java:130)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.app.ActivityThread.main(ActivityThread.java:3683)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at java.lang.reflect.Method.invokeNative(Native Method)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at java.lang.reflect.Method.invoke(Method.java:507)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at dalvik.system.NativeStart.main(Native Method)
2012-04-04 02:15
by AndroidDev
Have you added the Twitter4j jar to your classpath? See: http://www.vogella.de/articles/Eclipse/article.html#classpath_ja - elevine 2012-04-04 02:40
Yes I have. None the less, I still experience the same problem. By that tutorial is aimed at plain Java. Im using androids java - AndroidDev 2012-04-04 12:03
Its the same steps for Android and plain Java projects - elevine 2012-04-04 13:13
Yes, I've acknoleged that, but I still get the same errot - AndroidDev 2012-04-04 15:05
Can you provide more details regarding this error? Is there a stack trace that goes along with it? Can you be more specific than saying it happens when you compile your code? Is Eclipse underlining it in red and giving you this error, or does it happen while you are running your application - elevine 2012-04-04 15:23
When I run the app, I get that message in the log cat - AndroidDev 2012-04-04 15:50
Ok, so its not a compile error but rather a runtime error. Can you add the full stack trace you are getting in logcat into your original post? This should include information about which lines in your code are causing the error - elevine 2012-04-04 17:08
I am also facing the same problem - wasaig 2012-04-05 10:53
found the solution in this answerwasaig 2012-04-05 11:10
@wasaig Does not help. I get a red exclamation mark on my project in my hiecary. I only have one jar in my lib folder - AndroidDev 2012-04-06 03:48
if you are using ADT 17 rename your folder from lib to lib - wasaig 2012-04-06 04:27
This does not work - AndroidDev 2012-04-08 21:13


2

I've found the solution now. The problem was that I was using a very old version of Twitter4j, and in my libs folder, there were multiple jars with identical names. I have now fixed those problems and it is now working perfectly.

2012-06-02 05:37
by AndroidDev


4

try renaming the "lib" folder name to "libs". That solved a similar issue for me, check here: https://github.com/ddewaele/AndroidTwitterSample/issues/2

2012-05-02 08:35
by Emilio
Still does not hel - AndroidDev 2012-05-03 16:40


1

Create a folder named libs inside the root directory of your project and put twitter4j jar inside.

Then include new jar via Project Properties -> Java Build Path -> Libraries -> Add Jars.

Remove any old reference to twitter4j jars.

Clean and launch.

2012-05-26 06:22
by MoJa
This still does not help improve the situation - AndroidDev 2012-05-27 12:25


1

I had the same problem with twitter4j, and I solved it. Simply after naming the folder to "libs", then I made the "libs" folder to be used as the source folder so as some methods within can be accessed. I wonder what is the actual chemistry behind it!! but that's it, it is now working for me. To make it a source folder, you simply right click it, go to the "build path" and then select "Use as source folder".

2012-05-30 22:22
by Husseinoo The-Special


0

I know it's too old but for those like me - the problem was solved by including log4j, slf4j and commons-logging jars in the project since twitter4j core uses them.

2013-03-21 09:57
by coding_idiot


0

I found that I Imported Twitter4J the incorrect way. So what I proceeded to do was remove it from my build path then copy twitter4j-core-4.0.2.jar to my libs folder then restart eclipse and add the jar in my libs to my build path. All was sorted thereafter.

2014-12-18 08:21
by The Bachelor