首页 > 编程问答 >将 Spring data JPA jars 升级到 v3.3.0 后出现 java.lang.NoSuchMethodError 错误

将 Spring data JPA jars 升级到 v3.3.0 后出现 java.lang.NoSuchMethodError 错误

时间:2024-05-30 17:50:29浏览次数:28  
标签:java spring spring-data-jpa

在我将 spring data jpa 和 commons jar 升级到我们产品的 3.3.0 版本后,我遇到了这个错误。

Caused by: java.lang.NoSuchMethodError: 'void com.org.application.server.services.workorder.database.dao.UpdateWorkOrder._persistence_checkFetchedForSet(java.lang.String)' 

对于这个问题NoSuchMethodError,我发现该方法在编译时是存在的,但在运行时却莫名其妙地丢失了。

我检查了我使用的 jars 是否正确,给出的所有依赖关系是否正确。

我已经将 spring boot 升级到了最新版本,当我添加 spring data jpa 和 commons jars 时,我遇到了这个问题,我使用 Apache Ant 构建了项目

我想知道是什么导致了这一问题,以及如何解决这一问题

编辑:对于我们来说,目前无法移除或升级 ant...我只想指出一点,一旦我在 eclipseLink 属性中将 weaving 设置为 false,我就不会再遇到这个问题了。只有当织入设置为 true 时,我才会遇到这样的错误......现在我想知道,设置织入是否是向前迈进的正确方法?


你遇到的 NoSuchMethodError 错误表明你的应用程序在运行时找不到 _persistence_checkFetchedForSet 这个方法。这个方法通常与 JPA 持久化提供程序(比如 EclipseLink)生成的实体类的延迟加载功能有关。

以下是一些可能导致此错误的常见原因以及解决方法:

1. JAR 文件冲突:

  • 问题: 你的项目中可能存在多个版本的 Spring Data JPA、Commons 或者 EclipseLink JAR 文件,导致类加载器找到了错误版本的类。
  • 解决方法:
    • 仔细检查你的项目依赖关系,确保没有重复或冲突的 JAR 文件。可以使用 IDE 的依赖关系分析工具或者 Maven/Gradle 的依赖关系树插件来帮助你识别冲突。
    • 如果发现冲突,尝试排除不需要的 JAR 文件或者调整依赖关系的顺序,确保使用的是正确的版本。

2. 类路径问题:

  • 问题: 编译时存在的类在运行时可能不在类路径中,导致类加载器无法找到该类。
  • 解决方法:
    • 确保所有需要的 JAR 文件都在应用程序的类路径中,包括 Spring Data JPA、Commons 和 EclipseLink 的 JAR 文件。
    • 检查你的 Ant 构建文件,确保所有依赖的 JAR 文件都被正确地打包到最终的 WAR 或 JAR 文件中。

3. EclipseLink 织入(Weaving)配置问题:

  • 问题: 你提到了将 weaving 设置为 false 解决了问题,这表明可能是 EclipseLink 的织入配置导致了问题。
  • 解决方法:
    • 检查 EclipseLink 配置: 确保 EclipseLink 正确配置了实体类的织入方式(静态织入或动态织入)。
    • 静态织入: 需要在编译时使用 EclipseLink 提供的工具处理实体类字节码。
    • 动态织入: 需要在运行时使用 EclipseLink 的代理机制。
    • 如果不需要使用延迟加载等织入功能,可以将 weaving 设置为 false 来禁用织入。

4. 缓存问题:

  • 问题: 编译后的类可能被缓存,导致运行时加载的是旧版本的类。
  • 解决方法:
    • 清理你的项目构建目录(例如 targetbuild 目录)。
    • 清理你的应用服务器或 servlet 容器的缓存。
    • 重启你的 IDE。

关于是否应该将 weaving 设置为 false

  • 优点: 禁用织入可以避免一些潜在的配置问题,并且可以提高应用程序的启动速度。
  • 缺点: 如果你的应用程序依赖于延迟加载等织入功能,禁用织入会导致这些功能无法正常工作。

建议你在权衡利弊后,根据你的应用程序的实际需求来决定是否禁用织入。

希望以上信息能够帮助你解决 NoSuchMethodError 错误。如果问题仍然存在,请提供更多关于你的项目配置、依赖关系和错误信息的细节,以便我能够更好地帮助你。

标签:java,spring,spring-data-jpa
From: 78544237

相关文章

  • JavaDS-学习数据结构之如果从零开始手搓顺序表,顺带学习自定义异常怎么用!
    前言笔者开始学习数据结构了,虽然笔者已经会用了,不管是C++中的stl亦或是Java中的集合,为了算法比赛多少都突击过,但只知其然而不知其所以然,还是会限制发展的,因此,笔者写下这篇博客.内容是手搓一个顺序表.顺带加一点异常的使用,大伙看个乐子就好了.有错误直接私信喷我就......
  • SpringBoot项目接入分布式任务调度平台xxl-job(2.0.2)说明
    简介如果是单体项目,定时任务写到项目中就能满足需要,当需要部署集群的时候就会出现问题,接入统一的任务调试平台是一个不错的选择。接入xxl-job挺简单的,只需要几步,好记性不如烂笔头,记录一下步骤,方便以后使用。 本次使用软件的相关版本:xxl-job版本:2.0.2spring-boot:2.3.6.RELEAS......
  • MITIT 2024 Spring Invitational Qualification 简要题解
    这个比赛没有找到题解,有点难绷,所以来写篇。(实际上是无聊时写的就是了)题面:https://codeforces.com/gym/105125/。目测难度是绿绿黄紫紫。A有点诈骗。其实策略是只保留\(\le3\)个数,然后就随便维护一下。\(O(n\logn)\)。Code#include<bits/stdc++.h>usingnamespaces......
  • springboot基于Java的超市进销存系统vue(源码+lw+部署文档+讲解等)
    前言......
  • 基于springboot家政服务管理平台vue(源码+lw+部署文档+讲解等)
    前言......
  • 19.基于SSM的点餐系统|基于SSM框架+JSP+ Mysql+Java+B/S框架设计与实现(可运行源码+数
    内容概要:全套项目源码+详尽文档,一站式解决您的学习与项目需求。适用人群:计算机、通信、人工智能、自动化等专业的学生、老师及从业者。使用场景及目标:无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。项目代码经过调试测试,确保直接运行,节省您的时......
  • java 注解和反射
    8.注解和反射8.1什么是注解annotationjkd5.0提供的8.2内置注解:@override覆盖方法@Deprecated不推荐使用,@suppressWarnings抑制警告信息:8.3元注解:解释其他注解的注解meta-annotation@Target描述注解范围@Retention注解生命周期:source<class<runtime@Documented:注......
  • Java 异常处理 throws
    Java异常处理throwsJava中异常对象的生成有两种方式:由虚拟机自动生成:程序运行过程中,虚拟机检测到程序发生了问题,那么针对当前代码,就会在后台自动创建一个对应异常类的实例对象并抛出。由开发人员手动创建:new异常类型([实参列表]);,如果创建好的异常对象不抛出对程序......
  • Java 中 controller & service & dao 之间的关系
    开门见山:Controller层调用Service层,Service层调用DAO层,DAO层负责操作Model层,从而完成整个系统的业务与处理、数据访问等功能。Model数据库实体层Model层就是数据库实体层,也被称为entity层,Bean,pojo或者po。一般数据库一张表对应一个实体类,类属性和表字段一一对应......
  • Java学习笔记(三)
    Java学习笔记(三)对象和类对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。类:类是一个模板,它描述一类对象的行为和状态。下图中汽车为类(class),而具体的每辆车为该汽车类的对象(object),对象包含了......