2017-04-14 145 views
1

我從2.5升級到HazelCast 3.8,但升級後我得到以下異常:HazelCast升級2.5問題3.8

com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Recursive load of: . 
. 
. 
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201) 
     at com.google.common.cache.LocalCache.get(LocalCache.java:3934) 
     at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) 
     at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) 
     at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) 
     at com.google.inject.internal.FailableCache.get(FailableCache.java:48) 
     at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50) 
     at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136) 
     at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:547) 
     at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:884) 
     at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805) 
     at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282) 
     at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214) 
     at com.google.inject.internal.SingleFieldInjector.<init>(SingleFieldInjector.java:42) 
     at com.google.inject.internal.MembersInjectorStore.getInjectors(MembersInjectorStore.java:131) 
     at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:98) 

沒有任何一個有任何想法?

+0

你可以發表你如何定義緩存,使用和加載值的代碼? – Xaerxess

回答

0

這是吉斯的bug,當吉斯無法初始化注入類,由於缺少接口實現綁定或構造函數初始化過程中失敗的話,它會顯示這個錯誤,而不是實際的錯誤, 您可以檢查, https://github.com/google/guice/issues/785

以下程序失敗同樣的錯誤

`package com.guicetest; 
import javax.inject.Inject; 
import javax.inject.Provider; 
import com.google.inject.AbstractModule; 
import com.google.inject.Guice; 
import com.google.inject.Provides; 
/* Dependencies: 
Class01 
    Class04 
    Class03 
Class02 
    @Provides Class01 
Class03 
    Class01 
Class04 
    Class05 
    Class01 
Class05 
    Interface01 
*/ 
public class MyTest { 
    public static void main(String[] args) { 
     Guice.createInjector(new AbstractModule() { 
      @Override 
      protected void configure() { 
      } 
      @Provides 
      public Class02 providesClass02(Provider<Class01> arg) { 
       return null; 
      } 
     }); 
    } 
} 
class Class01 { 
    @Inject 
    public Class01(Provider<Class04> arg1, Provider<Class03> arg2) { 
    } 
} 
class Class02 { 
} 
class Class03 { 
    @Inject 
    public Class03(Provider<Class01> arg) { 
    } 
} 
class Class04 { 
    @Inject 
    public Class04(Provider<Class05> arg1, Provider<Class01> arg2) { 
    } 
} 
class Class05 { 
    @Inject 
    public Class05(Provider<Interface01> arg) { 
    } 
} 
interface Interface01 { 
}` 

您可以通過將調試點上LocalCache在異常的原因找到實際的錯誤和擴大裝載機對象,你就可以找到實際的錯誤, Finding actual error in intellij IDE