2016-04-02 47 views
2

爲什麼Guice 3.0會拋出此異常而不是錯誤的可配置組件的格式化消息(例如@Inject丟失)?Guice 3.0 - ArrayIndexOutOfBoundsException在啓動時?

Exception in thread "main" com.google.inject.internal.util.$ComputationException: java.lang.ArrayIndexOutOfBoundsException: 16640 
    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.forMember(StackTraceElements.java:53) 
    at com.google.inject.internal.Errors.formatInjectionPoint(Errors.java:716) 
    at com.google.inject.internal.Errors.formatSource(Errors.java:678) 
    at com.google.inject.internal.Errors.format(Errors.java:555) 
    at com.google.inject.ConfigurationException.getMessage(ConfigurationException.java:70) 
    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.io.PrintStream.println(PrintStream.java:821) 
    at java.lang.Throwable$WrappedPrintStream.println(Throwable.java:748) 
    at java.lang.Throwable.printStackTrace(Throwable.java:655) 
    at java.lang.Throwable.printStackTrace(Throwable.java:643) 
    at java.lang.Throwable.printStackTrace(Throwable.java:634) 
    at hu.daniel.hari.exercises.cleanarchitecture.payrollcasestudy.adapters.primary.ui.impl.swing._2.SwingUIMain2.<init>(SwingUIMain2.java:40) 
    at hu.daniel.hari.exercises.cleanarchitecture.payrollcasestudy.adapters.primary.ui.impl.swing._2.SwingUIMain2.main(SwingUIMain2.java:17) 
Caused by: java.lang.ArrayIndexOutOfBoundsException: 16640 
    at com.google.inject.internal.asm.$ClassReader.readClass(Unknown Source) 
    at com.google.inject.internal.asm.$ClassReader.accept(Unknown Source) 
    at com.google.inject.internal.asm.$ClassReader.accept(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) 
    ... 17 more 

我initating代碼:

Injector injector = Guice.createInjector(new SwingUIModule(useCaseFactory)); 
injector.getInstance(MainFrameUI.class).show(); 
+0

您是否找到解決方案?有關這個問題的任何線索? – angelcervera

回答

2

我認爲這個問題是吉斯3及以下如何處理lambda表達式。您可能需要升級到Guice 4才能解決此問題,如here所述。