【问题标题】:Android Twitter4j giving error NoClassDefFoundError: twitter4j.TwitterFactoryAndroid Twitter4j 给出错误 NoClassDefFoundError: twitter4j.TwitterFactory
【发布时间】:2012-04-17 17:57:15
【问题描述】:

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

【问题讨论】:

  • 您是否已将 Twitter4j jar 添加到您的类路径中?见:vogella.de/articles/Eclipse/article.html#classpath_jar
  • 是的,我有。尽管如此,我仍然遇到同样的问题。那个教程是针对纯Java的。我正在使用androids java。
  • Android 和纯 Java 项目的步骤相同。
  • 是的,我已经承认了这一点,但我仍然犯了同样的错误。
  • 您能否提供有关此错误的更多详细信息?是否有伴随它的堆栈跟踪?你能比说编译代码时发生的更具体吗? Eclipse 是在红色下划线并给您此错误,还是在您运行应用程序时发生?

标签: android twitter4j


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      然后通过 Project Properties -> Java Build Path -> 包含新 jar 库 -> 添加罐子。

      删除所有对 twitter4j jar 的旧引用。

      清理并启动。

      【讨论】:

      • 这仍然无助于改善情况。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          我发现我以错误的方式导入 Twitter4J。所以我继续做的是将它从我的构建路径中删除,然后将 twitter4j-core-4.0.2.jar 复制到我的 libs 文件夹,然后重新启动 eclipse 并将我的库中的 jar 添加到我的构建路径中。之后一切都被整理了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-30
            • 2018-08-14
            相关资源
            最近更新 更多