2012-02-12 30 views
10

Chỉ cần bắt đầu theo cách của tôi với Roboguice cho android. Đã thử triển khai this tiêm bối cảnh đơn giản nhưng nhận ngoại lệ này. Tôi googled nó và chạy vào khá một vài bài viết nhưng không giải quyết được vấn đề của tôi. Đây là ngoại lệ dưới đây, bất kỳ ý tưởng nào?Android Roboguice Exception

Cảm ơn trước

02-05 00:14:54.330: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.330: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.340: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.340: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.361: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.361: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.361: W/dalvikvm(777): VFY: unable to find class referenced in signature (Lcom/google/inject/Provider;) 
02-05 00:14:54.370: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.370: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.370: W/dalvikvm(777): VFY: unable to find class referenced in signature (Lcom/google/inject/Provider;) 
02-05 00:14:54.380: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.380: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.401: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.401: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.401: W/dalvikvm(777): VFY: unable to find class referenced in signature (Lcom/google/inject/Provider;) 
02-05 00:14:54.430: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.430: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.430: I/dalvikvm(777): Failed resolving Lroboguice/application/RoboApplication$1; interface 82 'Lcom/google/inject/Provider;' 
02-05 00:14:54.430: W/dalvikvm(777): Link of class 'Lroboguice/application/RoboApplication$1;' failed 
02-05 00:14:54.430: E/dalvikvm(777): Could not find class 'roboguice.application.RoboApplication$1', referenced from method roboguice.application.RoboApplication.initInstanceMembers 
02-05 00:14:54.430: W/dalvikvm(777): VFY: unable to resolve new-instance 655 (Lroboguice/application/RoboApplication$1;) in Lroboguice/application/RoboApplication; 
02-05 00:14:54.430: D/dalvikvm(777): VFY: replacing opcode 0x22 at 0x0007 
02-05 00:14:54.451: D/dalvikvm(777): VFY: dead code 0x0009-006b in Lroboguice/application/RoboApplication;.initInstanceMembers()V 
02-05 00:14:54.481: I/dalvikvm(777): Could not find method com.google.inject.internal.Maps.newHashMap, referenced from method roboguice.inject.ContextScope.getScopedObjectMap 
02-05 00:14:54.481: W/dalvikvm(777): VFY: unable to resolve static method 1165: Lcom/google/inject/internal/Maps;.newHashMap()Ljava/util/HashMap; 
02-05 00:14:54.491: D/dalvikvm(777): VFY: replacing opcode 0x71 at 0x0018 
02-05 00:14:54.491: D/dalvikvm(777): VFY: dead code 0x001b-0020 in Lroboguice/inject/ContextScope;.getScopedObjectMap (Lcom/google/inject/Key;)Ljava/util/Map; 
02-05 00:14:54.500: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.500: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.500: W/dalvikvm(777): VFY: unable to find class referenced in signature (Lcom/google/inject/Provider;) 
02-05 00:14:54.500: I/dalvikvm(777): Failed resolving Lcom/google/inject/Provider; interface 627 'Ljavax/inject/Provider;' 
02-05 00:14:54.500: W/dalvikvm(777): Link of class 'Lcom/google/inject/Provider;' failed 
02-05 00:14:54.500: I/dalvikvm(777): Failed resolving Lroboguice/inject/ContextScope$1; interface 82 'Lcom/google/inject/Provider;' 
02-05 00:14:54.500: W/dalvikvm(777): Link of class 'Lroboguice/inject/ContextScope$1;' failed 
02-05 00:14:54.510: E/dalvikvm(777): Could not find class 'roboguice.inject.ContextScope$1', referenced from method roboguice.inject.ContextScope.scope 
02-05 00:14:54.510: W/dalvikvm(777): VFY: unable to resolve new-instance 672 (Lroboguice/inject/ContextScope$1;) in Lroboguice/inject/ContextScope; 
02-05 00:14:54.510: D/dalvikvm(777): VFY: replacing opcode 0x22 at 0x0000 
02-05 00:14:54.510: D/dalvikvm(777): VFY: dead code 0x0002-0005 in Lroboguice/inject/ContextScope;.scope (Lcom/google/inject/Key;Lcom/google/inject/Provider;)Lcom/google/inject/Provider; 
02-05 00:14:54.571: E/dalvikvm(777): Could not find class 'javax.inject.Provider', referenced from method com.google.inject.internal.MoreTypes.canonicalizeForKey 
02-05 00:14:54.571: W/dalvikvm(777): VFY: unable to resolve const-class 627 (Ljavax/inject/Provider;) in Lcom/google/inject/internal/MoreTypes; 
02-05 00:14:54.571: D/dalvikvm(777): VFY: replacing opcode 0x1c at 0x0021 
02-05 00:14:54.580: D/dalvikvm(777): VFY: dead code 0x0023-0045 in Lcom/google/inject/internal/MoreTypes;.canonicalizeForKey (Lcom/google/inject/TypeLiteral;)Lcom/google/inject/TypeLiteral; 
02-05 00:14:54.611: D/AndroidRuntime(777): Shutting down VM 
02-05 00:14:54.611: W/dalvikvm(777): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
02-05 00:14:54.640: E/AndroidRuntime(777): FATAL EXCEPTION: main 
02-05 00:14:54.640: E/AndroidRuntime(777): java.lang.NoClassDefFoundError: javax.inject.Provider 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.google.inject.internal.MoreTypes.canonicalizeForKey(MoreTypes.java:81) 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.google.inject.Key.<init>(Key.java:119) 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.google.inject.Key.get(Key.java:212) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.inject.ContextScope.enter(ContextScope.java:106) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.inject.ContextScope.<init>(ContextScope.java:80) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.application.RoboApplication.initInstanceMembers(RoboApplication.java:100) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.application.RoboApplication.getInjector(RoboApplication.java:83) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.activity.RoboActivity.getInjector(RoboActivity.java:192) 
02-05 00:14:54.640: E/AndroidRuntime(777): at roboguice.activity.RoboActivity.onCreate(RoboActivity.java:70) 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.robotest.MyActivity.onCreate(MyActivity.java:19) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.os.Looper.loop(Looper.java:123) 
02-05 00:14:54.640: E/AndroidRuntime(777): at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-05 00:14:54.640: E/AndroidRuntime(777): at java.lang.reflect.Method.invokeNative(Native Method) 
02-05 00:14:54.640: E/AndroidRuntime(777): at java.lang.reflect.Method.invoke(Method.java:521) 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-05 00:14:54.640: E/AndroidRuntime(777): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-05 00:14:54.640: E/AndroidRuntime(777): at dalvik.system.NativeStart.main(Native Method) 

Trả lời

7

cảm ơn bạn, có vẻ như tôi đã làm việc với Guice 3, không được Roboguice hỗ trợ 1.1.2. Tôi đã xóa Guice 3 và đặt Guice 2.0-no_aop và điều này giải quyết được vấn đề của tôi. Cảm ơn một lần nữa!

+0

Không tốt hơn nếu nâng cấp Roboguice lên phiên bản mới hơn là hạ cấp Guice? –

+0

Một năm trước - chưa (câu hỏi này là từ tháng 2 năm 2012). Hôm nay - chắc chắn :) – forhas

+0

Tôi hiểu, cảm ơn .. –

33

Tải javax.inject-1.jar và thêm nó vào xây dựng con đường của bạn.

Xem here.

Ngoài ra, hãy đảm bảo bạn đang sử dụng Guice without AOP.

+0

Điều này sẽ không hoạt động đối với Android. Hãy thử câu trả lời của Yogev bên dưới. – adamwong246

+2

Không chắc chắn ý của bạn là gì khi tôi thử nghiệm trên Android và nó hoạt động. – Luis

+1

Sự khác nhau giữa javax.inject.jar trong guice-3.0.zip và javax.inject-1.jar là gì? Nó hoạt động và cái kia thì không nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về lý do tại sao. – dbaugh

3

Hãy chắc chắn để có

  • roboguice-2.0.jar
  • Guice-3.0-no_aop.jar
  • jsr305-1.3.9.jar
  • javax.inject-1.jar

và nó sẽ hoạt động.

+0

Tải xuống https://github.com/roboguice/roboguice/issues/29 – LMK