You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle项目运行时出现Could not load requested class: jcache错误排查求助

问题排查与解决方案

首先,你的错误java.lang.ClassNotFoundException: Could not load requested class : jcache有两个核心诱因:Hibernate缓存区域工厂类配置错误,以及Hibernate相关依赖版本严重不一致,我们一步步来解决:

1. 修正Hibernate缓存配置(直接解决类找不到的问题)

错误日志显示Hibernate尝试加载名为jcache的类,这是因为你的Hibernate配置文件(比如hibernate.cfg.xml或persistence.xml)中,hibernate.cache.region.factory_class的配置值写错了。

正确的JCache区域工厂类名必须是全限定类名,而不是简写的jcache:

<!-- 替换错误的配置 -->
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.jcache.JCacheRegionFactory"/>

如果你的项目实际想用Ehcache作为缓存实现(毕竟你引入了hibernate-ehcache),则应该对应配置Ehcache的区域工厂:

<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>

2. 统一Hibernate依赖版本(解决潜在兼容性问题)

你的build.gradle里Hibernate组件版本混乱得很:

  • hibernate-core、hibernate-hikaricp等是5.2.10.Final,但hibernate-ehcache直接跳到了5.6.8.Final(跨了3个大版本)
  • hibernate-entitymanager是5.5.2.Final,但Hibernate 5.2+已经把这个组件合并到hibernate-core里了,完全没必要单独引入
  • 还存在重复的JPA API依赖(javax.persistence-api:2.2和hibernate-jpa-2.0-api:1.0.1),这会导致类加载冲突

修正后的依赖配置

用Gradle的版本变量统一管理Hibernate版本,移除冗余依赖:

// 统一管理版本号,后续维护更方便
ext {
    hibernateVersion = '5.2.22.Final' // 选5.2系列的稳定版,和你原有的核心版本兼容
}

dependencies {
    runtime "com.google.guava:guava:28.1-jre"
    runtime "com.opencsv:opencsv:3.9"
    runtime "gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.14.0"
    runtime "org.yaml:snakeyaml:1.25"
    runtime "org.postgresql:postgresql:42.0.0"
    runtime "mysql:mysql-connector-java:5.1.41"
    
    // 统一版本的Hibernate核心组件
    runtime "org.hibernate:hibernate-core:${hibernateVersion}"
    runtime "org.hibernate:hibernate-hikaricp:${hibernateVersion}"
    runtime "org.hibernate:hibernate-validator:${hibernateVersion}"
    runtime "org.hibernate:hibernate-jcache:${hibernateVersion}"
    runtime "org.hibernate:hibernate-ehcache:${hibernateVersion}"
    // Hibernate Search 5.7.x本来就兼容Hibernate 5.2.x,版本不用改
    runtime "org.hibernate:hibernate-search-orm:5.7.0.Final"
    
    // 只保留一个JPA API依赖(Hibernate 5.2支持JPA 2.1+,2.2版本完全兼容)
    runtime 'javax.persistence:javax.persistence-api:2.2'
}

3. 补充必要的缓存实现依赖(如果用JCache)

如果你确实需要用JCache作为缓存实现,除了hibernate-jcache,还得引入具体的JCache实现库(比如Ehcache 3):

// 添加JCache实现(示例:Ehcache 3)
runtime "org.ehcache:ehcache:3.8.1"
runtime "javax.cache:cache-api:1.1.1"

验证步骤

  1. 清理旧的构建缓存:执行gradle clean
  2. 重新构建项目:gradle build
  3. 运行项目:gradle run

内容的提问来源于stack exchange,提问作者Maher Ben Taleb Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 01:52:32