2012-04-04 24 views
6

Tôi đang cố gắng sử dụng twitter4j cho ứng dụng của mình để kết nối và đăng lên twitter. Tôi đang theo dõi this tutorial. Tôi đã tải xuống dự án ví dụ từ here và cố gắng chạy nó trên android 2.3.3. Tôi chắc chắn rằng tôi đã sửa đổi Constants.java tệp chính xác theo trang web nhà phát triển twitter của tôi. Trong số TwitterUtils.java tôi cũng nhập OAUTH_TOKENOAUTH_TOKEN_SECRET. nhưng sau khi chạy nó, tôi đã thông báo lỗi sau:twitter4j => AndroidRuntime (446): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken

> E/dalvikvm(374): Could not find class 'twitter4j.http.AccessToken', referenced from method com.ecs.android.sample.twitter.TwitterUtils.isAuthenticated 

>W/dalvikvm(374): VFY: unable to resolve new-instance 67 (Ltwitter4j/http/AccessToken;) in Lcom/ecs/android/sample/twitter/TwitterUtils; 

>D/dalvikvm(374): VFY: replacing opcode 0x22 at 0x0010 

>D/dalvikvm(374): VFY: dead code 0x0012-002f in Lcom/ecs/android/sample/twitter/TwitterUtils;.isAuthenticated (Landroid/content/SharedPreferences;)Z 

>E/dalvikvm(374): Could not find class 'twitter4j.http.AccessToken', referenced from method com.ecs.android.sample.twitter.TwitterUtils.sendTweet 

>W/dalvikvm(374): VFY: unable to resolve new-instance 67 (Ltwitter4j/http/AccessToken;) in Lcom/ecs/android/sample/twitter/TwitterUtils; 

>D/dalvikvm(374): VFY: replacing opcode 0x22 at 0x0010 

>D/dalvikvm(374): VFY: dead code 0x0012-002b in Lcom/ecs/android/sample/twitter/TwitterUtils;.sendTweet (Landroid/content/SharedPreferences;Ljava/lang/String;)V 

>D/AndroidRuntime(374): Shutting down VM 

>W/dalvikvm(374): threadid=1: thread exiting with uncaught exception (group=0x40015560) 

>E/AndroidRuntime(374): FATAL EXCEPTION: main 

>E/AndroidRuntime(374): java.lang.NoClassDefFoundError: twitter4j.http.AccessToken 

>E/AndroidRuntime(374):  at com.ecs.android.sample.twitter.TwitterUtils.isAuthenticated(TwitterUtils.java:18) 

>E/AndroidRuntime(374):  at com.ecs.android.sample.twitter.AndroidTwitterSample.updateLoginStatus(AndroidTwitterSample.java:72) 

>E/AndroidRuntime(374):  at com.ecs.android.sample.twitter.AndroidTwitterSample.onResume(AndroidTwitterSample.java:68) 

>E/AndroidRuntime(374):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150) 

>E/AndroidRuntime(374):  at android.app.Activity.performResume(Activity.java:3832) 

>E/AndroidRuntime(374):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110) 

>E/AndroidRuntime(374):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135) 

>E/AndroidRuntime(374):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668) 

>E/AndroidRuntime(374):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 

>E/AndroidRuntime(374):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 

>E/AndroidRuntime(374):  at android.os.Handler.dispatchMessage(Handler.java:99) 

>E/AndroidRuntime(374):  at android.os.Looper.loop(Looper.java:130) 

>E/AndroidRuntime(374):  at android.app.ActivityThread.main(ActivityThread.java:3683) 

>E/AndroidRuntime(374):  at java.lang.reflect.Method.invokeNative(Native Method) 

>E/AndroidRuntime(374):  at java.lang.reflect.Method.invoke(Method.java:507) 

>E/AndroidRuntime(374):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 

>E/AndroidRuntime(374):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 

>E/AndroidRuntime(374):  at dalvik.system.NativeStart.main(Native Method) 

không chắc chắn nếu tôi đã sai lầm, trong Constant.java, tôi đã không thay đổi bất cứ điều gì trong

public static final String REQUEST_URL = "https://api.twitter.com/oauth/request_token"; 

public static final String ACCESS_URL = "https://api.twitter.com/oauth/access_token"; 

public static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize"; 

public static final String OAUTH_CALLBACK_SCHEME = "x-oauthflow-twitter"; 

public static final String OAUTH_CALLBACK_HOST = "callback"; 

public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST; 

Tôi đã cố gắng thay đổi "callback" với "http://www.MyWebsite.com" Vui lòng tư vấn làm cách nào để tôi có thể khắc phục các sự cố này.

+0

bạn có cập nhật quảng cáo của mình thành ADT 17 không? – MKJParekh

+0

ý của bạn là cấp API? .... tôi đã cập nhật lên cấp API 17, vui lòng cho tôi biết nếu bạn có ý nghĩa khác nhau. Tôi thực sự mới với android và java. –

+3

thì tên thư mục thư viện của bạn là gì .. nó phải là 'libs' nếu bạn đã giữ nó lib, hãy thay đổi nó thành' libs' và sau đó kiểm tra – MKJParekh

Trả lời

19

Bạn cần thay đổi tên thư mục của bạn lib-libs như bạn đã cập nhật ADT 17.

Thanh toán này Article cho các thông tin chi tiết về chủ đề này.

+0

Cảm ơn bạn rất nhiều. Bạn đã cứu cuộc đời tôi. lol – cmcromance

4

Trong trường hợp ai đó đang sử dụng ADT 18, tôi hoàn toàn không có thư mục lib, tôi đã sử dụng riêng tab Project, Properties, Java Build Path, Libraries. Để giải quyết vấn đề này, tôi đã tạo một thư mục libs trong dự án của mình, sao chép các jars bên ngoài của tôi vào thư mục này, và sau đó loại bỏ các tham chiếu trong tab Libraries. Dự án được xây dựng lại và làm việc!

Các vấn đề liên quan