我试图在客户端服务器模式下使用hazelcast启用Hibernate二级缓存。但是当我运行应用程序时,我会得到这个异常。
Caused by: java.lang.ClassNotFoundException: Could not load requested class : com.hazelcast.client.cache.impl.HazelcastClientCachingProvider
at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:210)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:130)
... 49 common frames omitted这是我的hibernate配置
jpa:
default:
properties:
hibernate:
cache:
use_query_cache: false
use_second_level_cache: true
region:
factory_class: com.hazelcast.client.cache.HazelcastClientCachingProvider更新这是我的build.gradle
plugins {
id("io.micronaut.application") version "$micronautAppVersion"
id("com.google.cloud.tools.jib") version "$googleJibVersion"
id "jacoco"
}
version = "0.1"
micronaut {
runtime("netty")
testRuntime("junit5")
processing {
incremental(true)
annotations("com.test")
}
}
dependencies {
annotationProcessor "io.micronaut.data:micronaut-data-processor"
annotationProcessor "io.micronaut:micronaut-http-validation"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
annotationProcessor "io.micronaut.openapi:micronaut-openapi"
implementation "javax.inject:javax.inject"
implementation "io.micronaut:micronaut-http-client"
implementation "io.micronaut:micronaut-runtime"
implementation "io.micronaut.data:micronaut-data-hibernate-jpa"
implementation "io.micronaut.sql:micronaut-hibernate-jpa"
implementation "io.micronaut:micronaut-validation"
implementation "javax.annotation:javax.annotation-api"
implementation("javax.inject:javax.inject:1")
implementation('io.micronaut.cache:micronaut-cache-hazelcast')
runtimeOnly "io.micronaut.sql:micronaut-jdbc-hikari"
}发布于 2022-07-02 22:01:26
HazelcastClientCachingProvider是一个客户机,它意味着它没有任何自己的缓存,它只能与另一个缓存服务器通信(实际上,建议使用jcache作为标准的Java,而不是特定于提供者的客户端)。
Micronaut不会通过包含依赖项来自动启动缓存服务器。你得把它配置成像这样
或者,您可以使用hibernate配置直接配置嵌入式缓存:
hibernate:
cache:
region:
factory_class: jcache
javax:
cache:
provider: com.hazelcast.cache.impl.HazelcastServerCachingProvider
uri: <HazelcastConfig.xml>https://stackoverflow.com/questions/72582443
复制相似问题