Не удалось установить модуль Dagger с помощью DaggerAdapter в Guice - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь установить модули Dagger внутри приложения, используя Guice в качестве DI. Я столкнулся с DaggerAdapter, но столкнулся со следующей ошибкой:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$2 (file:/Volumes/Unix/brazil-pkg-cache/packages/GoogleGuice/GoogleGuice-4.x.277573.0/RHEL5_64/DEV.STD.PTHREAD/build/lib/guice-4.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Hello Guice!
May 09, 2020 12:15:44 AM com.google.inject.internal.MessageProcessor visit
INFO: An exception was caught and reported. Message: java.lang.ClassNotFoundException: dagger.Provides$Type
java.lang.NoClassDefFoundError: dagger/Provides$Type
    at com.google.inject.daggeradapter.DaggerMethodScanner$1.<clinit>(DaggerMethodScanner.java:49)
    at com.google.inject.daggeradapter.DaggerMethodScanner.prepareMethod(DaggerMethodScanner.java:49)
    at com.google.inject.internal.ProviderMethodsModule.createProviderMethod(ProviderMethodsModule.java:266)
    at com.google.inject.internal.ProviderMethodsModule.getProviderMethods(ProviderMethodsModule.java:144)
    at com.google.inject.internal.ProviderMethodsModule.configure(ProviderMethodsModule.java:123)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
    at com.google.inject.daggeradapter.DaggerAdapter$DaggerCompatibilityModule.configure(DaggerAdapter.java:78)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
    at com.google.inject.spi.Elements.getElements(Elements.java:110)
    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:73)
    at com.google.inject.Guice.createInjector(Guice.java:62)
    at com.stackoverflow.DaggerAdapterIntegrationTest.testSimpleModule(DaggerAdapterIntegrationTest.java:39)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: java.lang.ClassNotFoundException: dagger.Provides$Type
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 37 more


com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalArgumentException

    at com.google.common.cache.LocalCache$Segment.get(Unknown Source)
    at com.google.common.cache.LocalCache.get(Unknown Source)
    at com.google.common.cache.LocalCache.getOrLoad(Unknown Source)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(Unknown Source)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(Unknown Source)
    at com.google.inject.internal.util.StackTraceElements.forMember(StackTraceElements.java:66)
    at com.google.inject.internal.Errors.formatSource(Errors.java:806)
    at com.google.inject.internal.Errors.formatSource(Errors.java:785)
    at com.google.inject.internal.Errors.format(Errors.java:584)
    at com.google.inject.CreationException.getMessage(CreationException.java:50)
    at java.base/java.lang.Throwable.getLocalizedMessage(Throwable.java:396)
    at java.base/java.lang.Throwable.toString(Throwable.java:485)
    at java.base/java.lang.String.valueOf(String.java:2951)
    at java.base/java.io.PrintWriter.println(PrintWriter.java:837)
    at java.base/java.lang.Throwable$WrappedPrintWriter.println(Throwable.java:768)
    at java.base/java.lang.Throwable.printStackTrace(Throwable.java:659)
    at java.base/java.lang.Throwable.printStackTrace(Throwable.java:725)
    at org.junit.runner.notification.Failure.getTrace(Failure.java:71)
    at com.intellij.junit4.JUnit4TestListener.getTrace(JUnit4TestListener.java:293)
    at com.intellij.junit4.JUnit4TestListener.testFailure(JUnit4TestListener.java:275)
    at com.intellij.junit4.JUnit4TestListener.testFailure(JUnit4TestListener.java:227)
    at com.intellij.junit4.JUnit4TestListener.testFailure(JUnit4TestListener.java:205)
    at org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:139)
    at org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:61)
    at org.junit.runner.notification.RunNotifier.fireTestFailures(RunNotifier.java:134)
    at org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:128)
    at org.junit.internal.runners.model.EachTestNotifier.addFailure(EachTestNotifier.java:23)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:275)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: java.lang.IllegalArgumentException
    at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
    at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
    at com.google.inject.internal.asm.$ClassReader.<init>(Unknown Source)
    at com.google.inject.internal.util.LineNumbers.<init>(LineNumbers.java:65)
    at com.google.inject.internal.util.StackTraceElements$1.load(StackTraceElements.java:46)
    at com.google.inject.internal.util.StackTraceElements$1.load(StackTraceElements.java:43)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(Unknown Source)
    at com.google.common.cache.LocalCache$Segment.loadSync(Unknown Source)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(Unknown Source)
    ... 41 more


Process finished with exit code 255

Я следую https://github.com/google/guice/blob/master/extensions/dagger-adapter/test/com/google/inject/daggeradapter/DaggerAdapterTest.java для той же настройки, но не могу решить эту проблему.

Вот как выглядит мой код:

package com.stackoverflow;

import org.junit.Test;

import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Provides;
import com.google.inject.daggeradapter.DaggerAdapter;

public class DaggerAdapterIntegrationTest {

    @dagger.Module
    static class SimpleDaggerModule {
        @dagger.Provides
        @Provides
        String aString() {
            return "Hello Dagger!";
        }
    }

    static class IntegrationTestGuiceModule extends AbstractModule {
        @Override
        protected void configure() {
        }

        @Provides
        String aString() {
            return "Hello Guice!";
        }
    }

    @Test
    public void testSimpleModule() {

        Injector injector = Guice.createInjector(new IntegrationTestGuiceModule());
        System.out.println(injector.getInstance(String.class));

        Injector injectorWithAdapter = Guice.createInjector(DaggerAdapter.from(new SimpleDaggerModule()));
        System.out.println(injectorWithAdapter.getInstance(String.class));
    }
}


...