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

SpringBoot 2.5.9与EclipseLink 3.0.0升级后出现类找不到异常

错误原因

你遇到的ClassNotFoundException: jakarta.persistence.spi.PersistenceProvider本质是依赖版本不兼容:

  • EclipseLink 3.0.0是Jakarta EE 9适配版本,所有JPA API包名从javax.persistence迁移到了jakarta.persistence
  • SpringBoot 2.5.x系列仍基于传统Java EE,依赖的是javax.persistence相关类,两者包名不匹配导致类加载失败

可行解决方案

方案1:降级EclipseLink到兼容版本

将EclipseLink版本回退到2.7.x(比如你之前用的2.7.12),这个版本完全适配SpringBoot 2.5.x的javax.persistence依赖,无需额外调整其他配置。

方案2:升级SpringBoot到支持Jakarta EE的版本

SpringBoot 3.0及以上版本全面支持Jakarta EE,你可以:

  • 把SpringBoot版本升级到3.0.x或更高(比如3.0.0)
  • 保留EclipseLink 3.0.0版本
  • 注意:SpringBoot 3.x要求JDK版本至少为17,同时需要检查项目中其他第三方依赖是否也适配Jakarta EE(比如替换javax.*依赖为jakarta.*)

错误日志原文

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.JpaVendorAdapter]: Factory method 'jpaVendorAdapter' threw exception; nested exception is java.lang.NoClassDefFoundError: jakarta/persistence/spi/PersistenceProvider
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
    ... 62 common frames omitted
Caused by: java.lang.NoClassDefFoundError: jakarta/persistence/spi/PersistenceProvider
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:875)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1376)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
    at org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter.<init>(EclipseLinkJpaVendorAdapter.java:52)
    at com.config.EclipseLinkJpaConfiguration.createJpaVendorAdapter(EclipseLinkJpaConfiguration.java:38)
    at org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.jpaVendorAdapter(JpaBaseConfiguration.java:105)
    at com.config.EclipseLinkJpaConfiguration$$EnhancerBySpringCGLIB$$5f9eca68.CGLIB$jpaVendorAdapter$8(<generated>)
    at com.config.EclipseLinkJpaConfiguration$$EnhancerBySpringCGLIB$$5f9eca68$$FastClassBySpringCGLIB$$54dd22bf.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
    at com.config.EclipseLinkJpaConfiguration$$EnhancerBySpringCGLIB$$5f9eca68.jpaVendorAdapter(<generated>)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 63 common frames omitted
Caused by: java.lang.ClassNotFoundException: jakarta.persistence.spi.PersistenceProvider
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
    ... 83 common frames omitted

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:20:45