2017-04-04 46 views
0

我有一個多模塊的Spring Boot項目。一個模塊,'實體'包含Hibernate配置,包括Hazelcast L2緩存配置。這是一個.jar(不是Spring Boot)用於Hibernate拋出的Hazelcast L2緩存ClassNotFoundException

另一個模塊是'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> 

'hazelcast-hibernate5' 對hazelcast 3.5.5有管理的依賴,我排除。

當我運行'web'應用程序(Spring Boot)時,我得到了來自'實體'配置文件(其中聲明L2緩存)的以下錯誤。我不使用XML,這是Java配置。

產生的原因:拋出java.lang.ClassNotFoundException:com.hazelcast.internal.serialization.DataSerializerHook

在Eclipse我搜索的「類型」 &可以找到DataSerializerHook這是「實體」的依賴......作爲預期。

我從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。這現在已經解決了。

我在這裏錯過了什麼?

回答

0

hazelcast-hibernate5版本1.2取決於Hazelcast版本3.7可以看到here您應該不需要在Maven配置中的任何排除項,以便能夠將其與Hazelcast 3.7配合使用。在您的Maven配置中查找可能對先前的Hazelcast版本具有傳遞依賴性的依賴項。

您可以使用Maven dependency plugin或IDE的內置功能來顯示可傳遞的Maven依賴關係。

相關問題