2012-04-04 77 views
4

我正在做一個應用程序,與Twitter通信發佈推文。我的問題是,當編譯我的代碼,我得到錯誤信息:Android的Twitter4j給錯誤NoClassDefFoundError:twitter4j.TwitterFactory

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

您是否已將Twitter4j jar添加到您的類路徑中?請參閱:http://www.vogella.de/articles/Eclipse/article.html#classpath_jar – elevine 2012-04-04 02:40:29

+0

是的,我有。無論如何,我仍然遇到同樣的問題。通過該教程是針對普通的Java。我使用androids java。 – AndroidDev 2012-04-04 12:03:06

+0

對於Android和普通Java項目,其步驟相同。 – elevine 2012-04-04 13:13:37

回答

2

我現在找到了解決方案。問題是我使用的是舊版本的Twitter4j,而在我的libs文件夾中,有多個名字相同的罐子。我現在已經解決了這些問題,現在它正在完美地工作。

1

在 項目的根目錄內創建一個名爲libs的文件夾,並將twitter4j jar放入其中。

然後通過項目屬性 - > Java構建路徑 - > 包括新罐子庫 - >添加罐子。

刪除任何對twitter4j罐子的舊引用。

清潔並啓動。

+0

這仍然沒有幫助改善情況。 – AndroidDev 2012-05-27 12:25:16

1

我對twitter4j有同樣的問題,我解決了它。在將文件夾命名爲「libs」之後,我簡單地將「libs」文件夾用作源文件夾,以便可以訪問其中的某些方法。我不知道它背後的實際化學成分是什麼!但就是這樣,它現在正在爲我工​​作。要使其成爲源文件夾,只需右鍵單擊它,轉到「構建路徑」,然後選擇「用作源文件夾」。

0

我知道它太舊了,但對於像我這樣的人來說 - 由於twitter4j核心使用它們,所以通過在項目中包含log4j,slf4j和commons-logging jar來解決問題。

0

我發現我導入Twitter4J的方式不正確。所以我所做的就是將它從構建路徑中移除,然後將twitter4j-core-4.0.2.jar複製到我的libs文件夾中,然後重新啓動eclipse並將jar添加到我的構建路徑中。之後全部進行了排序。