Guava HazelCast从2.5升级到3.8

Guava HazelCast从2.5升级到3.8,guava,guice,hazelcast,Guava,Guice,Hazelcast,我正在将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 c

我正在将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)
com.google.common.util.concurrent.UncheckedExecutionException:java.lang.IllegalStateException:的递归加载:。
.
.
位于com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
位于com.google.common.cache.LocalCache.get(LocalCache.java:3934)
位于com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
位于com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
位于com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827)
位于com.google.inject.internal.FailableCache.get(FailableCache.java:48)
在com.google.inject.internal.constructorInjectStore.get(constructorInjectStore.java:50)上
在com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136)上
位于com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:547)
位于com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:884)
位于com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805)
位于com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282)
位于com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214)
位于com.google.inject.internal.SingleFieldInjector.(SingleFieldInjector.java:42)
在com.google.inject.internal.MembersInjectorStore.getInjectors(MembersInjectorStore.java:131)上
位于com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:98)

有人知道吗?

这是guice中的错误,当guice由于缺少接口实现绑定而无法初始化注入类或在构造函数初始化过程中失败时,它会显示此错误而不是实际错误, 你可以查一下,

下面的程序因同样的错误而失败

`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 {
}`
`package com.guicetest;
导入javax.inject.inject;
导入javax.inject.Provider;
导入com.google.inject.AbstractModule;
导入com.google.inject.Guice;
导入com.google.inject.Provides;
/*依赖项:
类别01
类别04
类别03
类别02
@提供Class01
类别03
类别01
类别04
类别05
类别01
类别05
接口01
*/
公共类MyTest{
公共静态void main(字符串[]args){
createInjector(新的AbstractModule(){
@凌驾
受保护的void configure(){
}
@提供
公共类02提供类02(提供程序参数){
返回null;
}
});
}
}
类别01{
@注入
公共类01(提供程序arg1、提供程序arg2){
}
}
类别02{
}
03班{
@注入
公共类03(提供程序arg){
}
}
04级{
@注入
公共类04(提供程序arg1、提供程序arg2){
}
}
05班{
@注入
公共类05(提供程序arg){
}
}
接口01{
}`
您可以通过在异常原因中的LocalCache上放置调试点并展开loader对象来查找实际错误,您将能够找到实际错误,

这是guice中的错误,当guice由于缺少接口实现绑定而无法初始化注入类或在构造函数初始化过程中失败时,它会显示此错误而不是实际错误, 你可以查一下,

下面的程序因同样的错误而失败

`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 {
}`
`package com.guicetest;
导入javax.inject.inject;
导入javax.inject.Provider;
导入com.google.inject.AbstractModule;
导入com.google.inject.Guice;
导入com.google.inject.Provides;
/*依赖项:
类别01
类别04
类别03
类别02
@提供Class01
类别03
类别01
类别04
类别05
类别01
类别05
接口01
*/
公共类MyTest{
公共静态void main(字符串[]args){
createInjector(新的AbstractModule(){
@凌驾
受保护的void configure(){
}
@提供
公共类02提供类02(提供程序参数){
返回null;
}
});
}
}
类别01{
@注入
公共类01(提供程序arg1、提供程序arg2){
}
}
类别02{
}
03班{
@注入
公共类03(提供程序arg){
}
}
04级{
@注入
公共类04(提供程序arg1、提供程序arg2){
}
}
05班{
@注入
公共类05(提供程序arg){
}
}
接口01{
}`
您可以通过在异常原因中的LocalCache上放置调试点并展开loader对象来查找实际错误,您将能够找到实际错误,

您可以发布如何定义缓存、使用和加载值的代码吗?您可以发布如何定义缓存、使用和加载值的代码吗?