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)
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.
try renaming the "lib" folder name to "libs". That solved a similar issue for me, check here: https://github.com/ddewaele/AndroidTwitterSample/issues/2
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.
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".
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.
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.