VerrifyError с Guice на Android maven project

Поэтому я пытаюсь заставить Guice работать в моем проекте android maven и комплекте в стороннем модуле. Он работает нормально в обычном junittest, который выполняет тестовую инъекцию, но не работает на виртуальной машине с сообщением logcat, приведенным ниже.

Я не могу понять, что существует множество сообщений о том, что Guice отлично работает на Android. Несмотря на это, мой код, кажется, терпит неудачу при вызове getBeanInfo () из инжектора Guice. Кажется, я не единственный, у кого есть эта ошибка.

Есть ли проблема с ошибкой Android «Невозможно разрешить виртуальный метод java / beans / PropertyDescriptor»?

Поэтому у меня есть пара вопросов. Является ли причина, по которой Guice не работает для меня, потому что некоторые функции вызываются моим сторонним модулем, который будет работать повсюду, но не является общим? Есть ли способ получить больше информации из Guice о том, что конкретно вызывает срабатывание getBeanInfo ()? Есть ли работа вокруг? Какие возможности доступны для дальнейшей отладки.

Решение должно быть совместимо с maven, так как ответы на аналогичный вопрос о настройке настроек eclipse для подобных проблем не могут быть применены. Получение «Caused by: java.lang.VerifyError:» (не то, чтобы у меня было много пробега здесь).

Я думаю, что все соответствующие файлы были обработаны dx плагином android maven, так как зависимость: дерево показывает весь соответствующий проект в области «компиляция», но я не эксперт здесь.

 03-05 00: 57: 34.529: I / dalvikvm (2295): threadid = 3: реакция на сигнал 3 03-05 00: 57: 34.568: I / dalvikvm (2295): Написал трассировки стека в '/ data / anr / Traces.txt '03-05 00: 57: 35.059: I / dalvikvm (2295): threadid = 3: реакция на сигнал 3 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): не удалось загрузить Finalizer в его Собственный загрузчик классов.  Вместо этого загрузите Finalizer в загрузчик текущего класса.  В результате вы не сможете собрать этот загрузчик классов.  Чтобы поддержать восстановление этого загрузчика классов, устраните основную проблему или переместите Коллекции Google в свой путь к системному классу.  03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): java.io.FileNotFoundException: com / google / inject / internal / util / $ Finalizer.class 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295) ): At com.google.inject.internal.util. $ FinalizableReferenceQueue $ DecoupledLoader.getBaseUrl (FinalizableReferenceQueue.java:269) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal .util. $ FinalizableReferenceQueue $ DecoupledLoader.loadFinalizer (FinalizableReferenceQueue.java:253) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ FinalizableReferenceQueue.loadFinalizer (FinalizableReferenceQueue. Java: 175) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ FinalizableReferenceQueue. (FinalizableReferenceQueue.java:100) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ MapMaker $ QueueHolder. (MapMaker.java:787) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.g  (MapMaker.java:946) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ MapMaker $. Сила $ 1.newEntry (MapMaker.java:312) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ MapMaker $ StrategyImpl.newEntry (MapMaker.java:498 ) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ MapMaker $ StrategyImpl.newEntry (MapMaker.java:419) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.util. $ CustomConcurrentHashMap $ ComputingImpl.get (CustomConcurrentHashMap.java:2029) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com. Google.inject.internal.Annotations $ AnnotationChecker.hasAnnotations (Annotations.java:116) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.Annotations.isScopeAnnotation (Annotations.java : 124) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): на com.google.  Inject.internal.ScopeBindingProcessor.visit (ScopeBindingProcessor.java:40) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.ScopeBindingProcessor.visit (ScopeBindingProcessor.java:30) 03 -05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.spi.ScopeBinding.acceptVisitor (ScopeBinding.java:59) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): At com.google.inject.internal.AbstractProcessor.process (AbstractProcessor.java:55) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): в com.google.inject.internal.InjectorShell $ Builder.build ( InjectorShell.java:165) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.internal.InternalInjectorCreator.build (InternalInjectorCreator.java:103) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.Guice.createInjector (Guice.java:95) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.google.inject.Guice.createInjector (Guice.java:72) 03-05 00: 57: 35.098  : W / nalizableReferenceQueue (2295): at com.google.inject.Guice.createInjector (Guice.java:62) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at za.co.mambo.cherrylist. Android.CherryListActivity.onCreate (CherryListActivity.java:27) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.app.Activity.performCreate (Activity.java:4465) 03-05 00:57: 35.098: W / nalizableReferenceQueue (2295): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1049) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.app.ActivityThread.performLaunchActivity (ActivityThread .java: 1920) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1981) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295) ): At android.app.ActivityThread.access $ 600 (ActivityThread.java:123) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1147 ) 03-05 00: 57: 35.09  8: W / nalizableReferenceQueue (2295): at android.os.Handler.dispatchMessage (Handler.java:99) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.os.Looper.loop (Looper .java: 137) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at android.app.ActivityThread.main (ActivityThread.java:4424) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295) ): At java.lang.reflect.Method.invokeNative (родной метод) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at java.lang.reflect.Method.invoke (Method.java:511) 03 -05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295) ): At com.android.internal.os.ZygoteInit.main (ZygoteInit.java:551) 03-05 00: 57: 35.098: W / nalizableReferenceQueue (2295): at dalvik.system.NativeStart.main (родной метод) 03 -05 00: 57: 35.108: I / dalvikvm (2295): Написал трассировки стека в '/data/anr/traces.txt' 03-05 00: 57: 35.338: D / dalvikvm (2295): GC_CONCUR  RENT освобожден 391K, 4% бесплатно 12676K / 13127K, приостановлено 8ms + 5ms 03-05 00: 57: 35.418: W / dalvikvm (2295): VFY: невозможно найти класс, на который ссылается подпись ([Ljava / beans / PropertyDescriptor;) 03 -05 00: 57: 35.418: W / dalvikvm (2295): VFY: невозможно найти класс, указанный в подписи ([Ljava / beans / PropertyDescriptor;) 03-05 00: 57: 35.418: W / dalvikvm (2295): VFY : Невозможно найти класс, на который ссылается подпись ([Ljava / beans / PropertyDescriptor;) 03-05 00: 57: 35.418: W / dalvikvm (2295): VFY: невозможно найти класс, на который делается ссылка в подписи ([Ljava / beans / PropertyDescriptor; ) 03-05 00: 57: 35.418: W / dalvikvm (2295): VFY: невозможно найти класс, указанный в подписи ([Ljava / beans / PropertyDescriptor;) 03-05 00: 57: 35.428: W / dalvikvm (2295) : VFY: невозможно найти класс, указанный в сигнатуре ([Ljava / beans / PropertyDescriptor;) 03-05 00: 57: 35.438: I / dalvikvm (2295): Не удалось найти метод java.beans.Introspector.getBeanInfo, ссылающийся на метод Com.google.inject.internal.cglib.core. $ ReflectUtils.getPropertiesHelper 03-05 00:57:35.  438: W / dalvikvm (2295): VFY: невозможно решить статический метод 8989: Ljava / beans / Introspector; .getBeanInfo (Ljava / lang / Class; Ljava / lang / Class;) Ljava / beans / BeanInfo;  03-05 00: 57: 35.438: D / dalvikvm (2295): VFY: замена кода операции 0x71 на 0x000c 03-05 00: 57: 35.458: W / dalvikvm (2295): VFY: невозможно разрешить класс исключений 1373 (Ljava / Beans / IntrospectionException;) 03-05 00: 57: 35.458: W / dalvikvm (2295): VFY: невозможно найти обработчик исключений в addr 0x4e 03-05 00: 57: 35.458: W / dalvikvm (2295): VFY: отклонено Lcom / google / inject / internal / cglib / core / $ ReflectUtils; .getPropertiesHelper (Ljava / lang / Class; ZZ) [Ljava / beans / PropertyDescriptor;  03-05 00: 57: 35.458: W / dalvikvm (2295): VFY: отклонение кода операции 0x0d при 0x004e 03-05 00: 57: 35.458: W / dalvikvm (2295): VFY: отклонено Lcom / google / inject / internal / Cglib / core / $ ReflectUtils; .getPropertiesHelper (Ljava / lang / Class; ZZ) [Ljava / beans / PropertyDescriptor;  03-05 00: 57: 35.458: W / dalvikvm (2295): Verifier отклонил класс Lcom / google / inject / internal / cglib / core / $ ReflectUtils;  03-05 00: 57: 35.488: D / AndroidRuntime (2295): выключение VM 03-05 00: 57: 35.498: W / dalvikvm (2295): threadid = 1: выход из потока с неперехваченным исключением (group = 0x409c01f8) 03 -05 00: 57: 35.508: I / dalvikvm (2295): threadid = 3: реакция на сигнал 3 03-05 00: 57: 35.548: I / dalvikvm (2295): Написал трассировки стека в '/ data / anr / trace .txt '03-05 00: 57: 35.568: E / AndroidRuntime (2295): FATAL EXCEPTION: main 03-05 00: 57: 35.568: E / AndroidRuntime (2295): java.lang.RuntimeException: не удается запустить Activity ComponentInfo {Za.co.mambo.cherrylist.android/za.co.mambo.cherrylist.android.CherryListActivity}: com.google.inject.internal.util. $ ComputationException: java.lang.VerifyError: com / google / inject / internal / Cglib / core / $ ReflectUtils 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1956) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:1981) 03-05 00: 57: 35.568: E / AndroidRuntime (2295):  At android.app.ActivityThread.access $ 600 (ActivityThread.java:123) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1147) 03 -05 00: 57: 35.568: E / AndroidRuntime (2295): at android.os.Handler.dispatchMessage (Handler.java:99) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): на android.os .Looper.loop (Looper.java:137) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.ActivityThread.main (ActivityThread.java:4424) 03-05 00: 57: 35.568 : E / AndroidRuntime (2295): at java.lang.reflect.Method.invokeNative (родной метод) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at java.lang.reflect.Method.invoke (метод .java: 511) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784) 03-05 00: 57: 35.568 : E / AndroidRuntime (2295): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:551) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): у dalvik.system.NativeStart. Основной (родной метод) 03-  05 00: 57: 35.568: E / AndroidRuntime (2295): вызвано: com.google.inject.internal.util. $ ComputationException: java.lang.VerifyError: com / google / inject / internal / cglib / core / $ ReflectUtils 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.util. $ MapMaker $ StrategyImpl.compute (MapMaker.java:553) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.util. $ MapMaker $ StrategyImpl.compute (MapMaker.java:419) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): на com.google .Inject.internal.util. $ CustomConcurrentHashMap $ ComputingImpl.get (CustomConcurrentHashMap.java:2041) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.FailableCache.get (FailableCache .java: 50) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.ConstructorInjectorStore.get (ConstructorInjectorStore.java:49) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.ConstructorBindingImpl.initialize (ConstructorBindingImpl.java:125) 03-05 00: 5  7: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InjectorImpl.initializeJitBinding (InjectorImpl.java:521) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google .inject.internal.InjectorImpl.createJustInTimeBinding (InjectorImpl.java:847) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive (InjectorImpl.java:772) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InjectorImpl.getJustInTimeBinding (InjectorImpl.java:256) 03-05 00: 57: 35.568: E / AndroidRuntime (2295) : At com.google.inject.internal.InjectorImpl.getBindingOrThrow (InjectorImpl.java:205) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InjectorImpl.getInternalFactory (InjectorImpl .java: 853) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.FactoryProxy.notify (FactoryProxy.java:46) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): в com.google.inject.internal.ProcessedBindingData.run  CreationListeners (ProcessedBindingData.java:50) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InternalInjectorCreator.initializeStatically (InternalInjectorCreator.java:133) 03-05 00:57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.InternalInjectorCreator.build (InternalInjectorCreator.java:106) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject .Guice.createInjector (Guice.java:95) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.Guice.createInjector (Guice.java:72) 03-05 00:57 : 35.568: E / AndroidRuntime (2295): at com.google.inject.Guice.createInjector (Guice.java:62) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at za.co.mambo. Cherrylist.android.CherryListActivity.onCreate (CherryListActivity.java:27) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.Activity.performCreate (Activity.java:4465) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1049)  03-05 00: 57: 35.568: E / AndroidRuntime (2295): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1920) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): ... 11 еще 03-05 00: 57: 35.568: E / AndroidRuntime (2295): вызвано: java.lang.VerifyError: com / google / inject / internal / cglib / core / $ ReflectUtils 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.cglib.reflect. $ FastClassEmitter. (FastClassEmitter.java:67) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google .inject.internal.cglib.reflect. $ FastClass $ Generator.generateClass (FastClass.java:72) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.cglib.core . $ DefaultGeneratorStrategy.generate (DefaultGeneratorStrategy.java:25) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.cglib.core. $ AbstractClassGenerator.create (AbstractClassGenerator.java: 216) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.cglib.reflect. $ FastClass $ Generator.crea  Te (FastClass.java:64) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.BytecodeGen.newFastClass (BytecodeGen.java:207) 03-05 00:57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal.DefaultConstructionProxyFactory.create (DefaultConstructionProxyFactory.java:53) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject .internal.ProxyFactory.create (ProxyFactory.java:153) 03-05 00: 57: 35.568: E / AndroidRuntime (2295): at com.google.inject.internal 03-05 00: 57: 36.178: I / dalvikvm ( 2295): threadid = 3: реакция на сигнал 3 03-05 00: 57: 36.188: I / dalvikvm (2295): Написал трассировки стека в '/data/anr/traces.txt' 03-05 00: 57: 36.530: I / dalvikvm (2295): threadid = 3: реакция на сигнал 3 03-05 00: 57: 36.538: I / dalvikvm (2295): Написал трассировки стека в '/data/anr/traces.txt' 

Dalvik vm не поддерживает аспектное ориентированное программирование, поэтому вы не можете использовать простой JVM Guice. Вы должны использовать версию no_aop.

С использованием сборки Maven

<dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> <version>3.0</version> <classifier>no_aop</classifier> </dependency> 

Чтобы получить банку no_aop в вашу сборку и apk.

Конечно, вы также можете использовать RoboGuice.