Java 如何使用Guice使Multibinder与FactoryModuleBuilder和泛型一起工作?

Java 如何使用Guice使Multibinder与FactoryModuleBuilder和泛型一起工作?,java,generics,guice,assisted-inject,Java,Generics,Guice,Assisted Inject,我已经读过了,但它似乎没有回答我的具体情况。以下是我所拥有的: 与FactoryModuleBuilder一起使用的接口 公共接口工厂{ T创建(过滤器配置配置); } 公共接口IFilterOneFactory扩展IFilterFactory{} 公共接口IFilterTwoFactory扩展IFilterFactory{} My Guice模块: @覆盖 受保护的void configure(){ 安装(新FactoryModuleBuilder().build(IFilterOneFac

我已经读过了,但它似乎没有回答我的具体情况。以下是我所拥有的:

与FactoryModuleBuilder一起使用的接口

公共接口工厂{
T创建(过滤器配置配置);
}
公共接口IFilterOneFactory扩展IFilterFactory{}
公共接口IFilterTwoFactory扩展IFilterFactory{}
My Guice模块:

@覆盖
受保护的void configure(){
安装(新FactoryModuleBuilder().build(IFilterOneFactory.class));
安装(新FactoryModuleBuilder().build(IFilterTwoFactory.class));

Multibinder这实际上是guice3.0和java8之间的Guice兼容性问题。 见:

我在构造函数中缺少了一些
@Assisted
@Inject
,Guice未能报告错误,因为这些类中使用了一些lambda


评论lambdas让我看到了错误并修复了它们。然后我取消了它们的注释,一切似乎都按预期进行了。

这在Guice 4.0中修复了吗?@durron597应该是的。@JanGalinski,我想再过12个小时就会修复了。我是那种不耐烦的人……会慢下来的。
[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
        at java.lang.Thread.run(Thread.java:745)
[WARNING]
com.google.inject.internal.util.$ComputationException: java.lang.ArrayIndexOutOfBoundsException: 19640
        at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553)
        at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419)
        at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
        at com.google.inject.internal.util.$StackTraceElements.forType(StackTraceElements.java:70)
        at com.google.inject.internal.Errors.formatSource(Errors.java:687)
        at com.google.inject.internal.Errors.format(Errors.java:555)
        at com.google.inject.CreationException.getMessage(CreationException.java:48)
        at java.lang.Throwable.getLocalizedMessage(Throwable.java:391)
        at java.lang.Throwable.toString(Throwable.java:480)
        at java.lang.String.valueOf(String.java:2982)
        at java.lang.StringBuilder.append(StringBuilder.java:131)
        at java.lang.Throwable.printEnclosedStackTrace(Throwable.java:695)
        at java.lang.Throwable.printStackTrace(Throwable.java:667)
        at java.lang.Throwable.printStackTrace(Throwable.java:643)
        at org.apache.maven.cli.PrintStreamLogger.warn(PrintStreamLogger.java:131)
        at org.apache.maven.monitor.logging.DefaultLog.warn(DefaultLog.java:93)
        at org.codehaus.mojo.exec.ExecJavaMojo$IsolatedThreadGroup.uncaughtException(ExecJavaMojo.java:386)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:309)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 19640
        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:62)
        at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:36)
        at com.google.inject.internal.util.$StackTraceElements$1.apply(StackTraceElements.java:33)
        at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549)
        ... 18 more