4

我正在制作一个与 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)
4

6 回答 6

4

尝试将“lib”文件夹名称重命名为“libs”。这为我解决了类似的问题,请在此处查看:https ://github.com/ddewaele/AndroidTwitterSample/issues/2

于 2012-05-02T08:35:38.313 回答
2

我现在找到了解决方案。问题是我使用的是非常旧的 Twitter4j 版本,并且在我的 libs 文件夹中,有多个名称相同的 jar。我现在已经解决了这些问题,它现在运行良好。

于 2012-06-02T05:37:13.687 回答
1

在项目的根目录中创建一个名为 libs 的文件夹,并将 twitter4j jar 放入其中。

然后通过 Project Properties -> Java Build Path -> Libraries -> Add Jars 包含新 jar。

删除对 twitter4j jar 的任何旧引用。

清洁并启动。

于 2012-05-26T06:22:27.483 回答
1

我在 twitter4j 上遇到了同样的问题,我解决了。只需将文件夹命名为“libs”,然后我将“libs”文件夹用作源文件夹,以便可以访问其中的一些方法。我想知道它背后的实际化学反应是什么!!但就是这样,它现在对我有用。要使其成为源文件夹,只需右键单击它,转到“构建路径”,然后选择“用作源文件夹”。

于 2012-05-30T22:22:26.877 回答
0

我知道它太旧了,但对于像我这样的人来说——问题是通过在项目中包含 log4j、slf4j 和 commons-logging jar 来解决的,因为 twitter4j 核心使用它们。

于 2013-03-21T09:57:05.873 回答
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-18T08:21:18.957 回答