用于Hibernate的Hazelcast L2缓存抛出ClassNotFoundException

时间:2017-04-04 20:23:00

标签: hibernate spring-boot hazelcast

我有一个多模块的Spring Boot项目。一个模块,'实体'包含Hibernate配置,包括Hazelcast L2缓存配置。这是一个.jar(不是Spring Boot)

另一个模块是' web'它依赖于'实体'但是是一个启动应用程序。

'实体'具有以下依赖项:

    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast-hibernate5</artifactId>
    <version>1.2</version>

    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast</artifactId>
    <version>3.7.1</version>

&#39; hazelcast-hibernate5&#39;对hazelcast 3.5.5有一个管理依赖,我将其排除在外。

当我运行&#39;网络&#39;应用程序(Spring Boot),我得到以下错误,该错误源自&#39;实体&#39;配置文件(声明L2缓存)。我不使用XML,这是Java配置。

引起:java.lang.ClassNotFoundException:com.hazelcast.internal.serialization.DataSerializerHook

在eclipse中我搜索&#34;输入&#34; &安培;可以找到DataSerializerHook,它是&#39;实体的依赖关系。 ......正如所料。

我从hazelcast-hibernate5中排除hazelcast 3.5.5的原因是因为在3.5.5中DataSerializerHook在com.hazelcast.nio.serialization中。在hazelcast 3.7.1中,它在com.hazelcast.internal.serialization中。最初,我得到了一个classCastException b / c。现在已经解决了。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

hazelcast-hibernate5版本1.2取决于Hazelcast版本3.7,可以看到here您不应该在Maven配置中使用任何排除项,以便能够将其与Hazelcast 3.7一起使用。查找Maven配置中的依赖项,这些依赖项可能对先前的Hazelcast版本具有传递依赖性。

您可以使用Maven dependency plugin或IDE的内置功能来显示传递的Maven依赖项。