Android Roboguice Exception
Asked Answered
I

3

10

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)
Inhale answered 12/2, 2012 at 18:23 Comment(0)
I
7

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!

Inhale answered 17/2, 2012 at 14:29 Comment(2)
Isn't it better to upgrade Roboguice to newer version rather than downgrade Guice?Hoist
A year ago - not yet (this questions is from Feb 2012). Today - sure :)Inhale
P
33

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

See here.

Also, make sure you are using Guice without AOP.

Pokpoke answered 14/2, 2012 at 13:23 Comment(4)
Not sure what you mean as I tested it on Android and it worked.Pokpoke
What is the difference between javax.inject.jar that is in the guice-3.0.zip and javax.inject-1.jar? It works and the other one doesn't but I can't find any documentation as to why.Astrogeology
@adamwong246: This does fix the issue when using RoboGuice 2 and Guice 3-noAOP. If using RoboGuice 1, you should be using Guice 2-noAOP (as forhas mentioned) and in RoboGuice1+Guice2, this isn't a problem.Titrant
Worked for me (Guice 3.0, no AOP)Carty
I
7

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!

Inhale answered 17/2, 2012 at 14:29 Comment(2)
Isn't it better to upgrade Roboguice to newer version rather than downgrade Guice?Hoist
A year ago - not yet (this questions is from Feb 2012). Today - sure :)Inhale
V
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.

Vaccination answered 31/7, 2013 at 7:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.