Android Twitter4j给出错误NoClassDefFoundError:twitter4j.TwitterFactory

时间:2012-04-04 02:15:58

标签: android twitter4j

我正在创建一个与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)

6 个答案:

答案 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添加到我的构建路径中。之后全部分类。