Android Roboguice Exception

我与影子孤独终老i 提交于 2020-01-01 08:46:14

问题


Just starting my way with Roboguice for android. Tried implementing this simple context injection but getting this exception. I googled it and ran into quite a few posts but non solved my issue. This is the exception below, any ideas?

Thanks in advance

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)

回答1:


Download javax.inject-1.jar and add it to your build path.

See here.

Also, make sure you are using Guice without AOP.




回答2:


thank you, it appears I was working with Guice 3, which is not supported by Roboguice 1.1.2. I removed Guice 3 and put Guice 2.0-no_aop and this solved my issue. Thanks again!




回答3:


Make sure to have

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

and it should work.



来源:https://stackoverflow.com/questions/9251367/android-roboguice-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!