我正在创建一个与Twitter通信的应用程序发布推文。我的问题是,在编译我的代码时,我收到错误消息:
NoClassDefFoundError: twitter4j.TwitterFactory
以下是通过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();
}
}
});
以下是我在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)
答案 0 :(得分:4)
尝试将“lib”文件夹名称重命名为“libs”。这为我解决了类似的问题,请点击此处:https://github.com/ddewaele/AndroidTwitterSample/issues/2
答案 1 :(得分:2)
我现在找到了解决方案。问题是我使用的是非常旧版本的Twitter4j,在我的libs文件夹中,有多个名称相同的jar。我现在已经修复了这些问题,现在它正在完美运作。
答案 2 :(得分:1)
在你的根目录中创建一个名为libs的文件夹 项目并将twitter4j jar放入其中。
然后通过项目属性包括新的jar - > Java构建路径 - > 图书馆 - >添加罐子。
删除对twitter4j jars的任何旧引用。
清洁并启动。
答案 3 :(得分:1)
我和twitter4j有同样的问题,我解决了它。只需将文件夹命名为“libs”,然后我将“libs”文件夹用作源文件夹,以便可以访问其中的某些方法。我想知道它背后的实际化学是什么!但就是这样,它现在正在为我工作。要使其成为源文件夹,只需右键单击它,转到“构建路径”,然后选择“用作源文件夹”。
答案 4 :(得分:0)
我知道它太旧了但对于像我这样的人来说 - 问题是通过在项目中包含log4j,slf4j和commons-logging jar来解决的,因为twitter4j核心使用它们。
答案 5 :(得分:0)
我发现我用不正确的方式导入了Twitter4J。所以我继续做的是从我的构建路径中删除它然后将twitter4j-core-4.0.2.jar复制到我的libs文件夹然后重新启动eclipse并将我的库中的jar添加到我的构建路径中。之后全部分类。