解决java.lang.NoClassDefFoundError 问题

解决java.lang.NoClassDefFoundError 问题

  • 一、背景
  • 二、分析
  • 三、解决

一、背景

项目运行成功之后,调用某个接口时报错,信息如下:
在这里插入图片描述

2024-04-17 14:59:23 [ERROR] --- [nio-8070-exec-1] c.c.c.e.LogExceptionHandleFilter         : Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: nonapi/io/github/classgraph/utils/ReflectionUtils
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: nonapi/io/github/classgraph/utils/ReflectionUtilsat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1087) ~[spring-webmvc-5.3.31.jar:5.3.31]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.31.jar:5.3.31]....
Caused by: java.lang.NoClassDefFoundError: nonapi/io/github/classgraph/utils/ReflectionUtilsat com.srdcloud.artifact.app.aspect.permission.PermissionAspect.read(PermissionAspect.java:118) ~[classes/:na]at com.srdcloud.artifact.app.aspect.permission.PermissionAspect.interfacePermissionCheck(PermissionAspect.java:60) ~[classes/:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_381]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_381]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_381]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_381]at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634) ~[spring-aop-5.3.31.jar:5.3.31]

参考文章
链接: https://blog.csdn.net/jamesjxin/article/details/46606307

二、分析

  1. 根据报错信息,找到nonapi/io/github/classgraph/utils/ReflectionUtils类,可以看到所属的jar包是classgraph:4.8.83版本
    在这里插入图片描述
  2. 查看项目对应的pom文件,发现引用的classgraph包版本是4.8.147版本的(父级jar包是springdoc-openapi-ui:1.6.9);而且4.8.147版本的classgraph包根本就没有 nonapi/io/github/classgraph/utils/ReflectionUtils这个类
    在这里插入图片描述

在这里插入图片描述
也就是说目前项目中引用的classgraph包版本不是pom文件中所用的版本,且pom中指定的classgraph包版本过高,导致classgraph包原有的方法已经没了

三、解决

由于classgraph包的父级jar包是springdoc-openapi-ui:1.6.9(pom文件中直接引入的是springdoc-openapi-ui),所以需要降低springdoc-openapi-ui版本

我将springdoc-openapi-ui版本降到了1.5.12版本(其实我也是一个个版本慢慢试着降下来才最终确定哪个合适)。

查看springdoc-openapi-ui里的classgraph包版本,发现是4.8.116版本:
在这里插入图片描述
这个版本的classgraph是包含有ReflectionUtils类
在这里插入图片描述
重新启动项目,调用同一个接口,验证通过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Git-Secrets防止将敏感信息意外上传至Git库

关于Git-Secrets Git-secrets是一款功能强大的开发安全工具,该工具可以防止开发人员意外将密码和其他敏感信息上传到Git库中。 Git-secrets首先会扫描提交的代码和说明,当与用户预先配置的正则表达式模式匹配时,便会阻止此次提交。该工具的优…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温(DTS)集光电信号检测、计算机技术等为一体,具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质,具有抗电磁干扰、本征防…

项目文档维护(一) 快速生成项目结构图

IDEA快速生成项目树形结构图 1. 执行指令 在项目根目录下,进入cmd或terminal, 输入如下指令: tree . > tr.txt 只有文件夹 tree /f . > tr.txt 包括文件夹和文件注意尽量要使用idea, pycharm等ide, 其他工具需自己测试效果, 本人使用power …

详解网络通讯框架Netty原理,看这一篇就够了

NIO网络通信 网络通信BIONIOselectpollepollselect poll epoll对比 Netty原理Netty架构reactor响应式编程netty组件eventLoop 线程间交互Future接口Promise接口 Handler和PipelineByteBuf组成指针常用方法 网络通信 通过网络编程的基础可以知道,各设备通过I/O流写入…

如何阻止访问您的网站

本周有一个客户,购买Hostease的HK Basic Linux虚拟主机,询问我们的在线客服,如何阻止部分地区或IP段访问他的网站。我们为用户提供教程,用户很快完成了设置。在此,我们分享这个操作教程,希望可以对您有帮助…

Linux第88步_非阻塞IO实验

非阻塞IO是“应用程序”对“驱动设备”进行操作,若不能获取到设备资源,则非阻塞IO应用程序的线程不会被“挂起”,即线程不进入休眠,而是一直“轮询”,直到获取到设备资源为止,或者直接放弃。 非阻塞IO应用举…

Kubernetes Replication Controller及其相关知识点学习

Kubernetes Replication Controller (RC) 一、概念 Replication Controller (RC) 是 Kubernetes 中早期用于管理 Pod 副本数量和生命周期的控制器对象。尽管在后续版本中已经被 ReplicaSet 所替代并逐渐淡出主流使用,理解 Replication Controller 的概念及其功能对…

本地部署运行大模型ollama

本地部署运行大模型ollama ollama模型下载地址 在我使用 vscode 开发时,使用 coplit 或 chatgpt 来辅助过于昂贵,于是我希望找到一个可以调用本地大模型的工具来辅助编程。 ollama 就是这样一个工具。 ollama使用 ollama 是一个可以将训练好的模型部署到…

1688店铺商品接口全攻略:一键获取商品信息,轻松玩转电商数据!

1688店铺所有商品接口技术详解 一、引言 随着电子商务的快速发展,越来越多的商家选择通过1688平台开展业务。为了方便商家获取店铺内所有商品的信息,1688平台提供了相应的API接口。本文将详细介绍如何使用这些接口获取店铺所有商品的信息,以…

GVRP协议与动态、静态vlan

一、GVRP协议使用场景 1、当实际组网复杂到网络管理员无法短时间内了解网络的拓扑结构,或者是整个网络的VLAN太多时,工作量会非常大,而且非常容易配置错误。在这种情况下,用户可以通过GVRP的VLAN自动注册功能完成VLAN的配置。 2、…

【大模型完全入门手册】——大模型入门理论(大语言模型公开数据集)

博主作为一名大模型开发算法工程师,很希望能够将所学到的以及实践中感悟到的内容梳理成为书籍。作为先导,以专栏的形式先整理内容,后续进行不断更新完善。希望能够构建起从理论到实践的全流程体系。 助力更多的人了解大模型,接触大模型,一起感受AI的魅力! 在当今机器学习…

【快捷部署】020_Jenkins(2.60.3)

📣【快捷部署系列】020期信息 编号选型版本操作系统部署形式部署模式复检时间020Jenkins2.60.3Ubuntu 20.04Docker单机2024-04-17 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1…

使用C++解决数据结构问题的实例

随着计算机科学的不断发展,数据结构已经成为一个重要的领域。在计算机编程中,数据结构是非常重要的,因为它是数据存储和管理的方式。一个完美的数据结构能够提高程序的效率和可扩展性。在这篇文章中,我们将探讨如何使用c解决数据结…

BackTrader 中文文档(十二)

原文:www.backtrader.com/ Visual Chart 原文:www.backtrader.com/docu/live/vc/vc/ 与 Visual Chart 的集成支持两者: 实时数据提供 实时交易 Visual Chart是完整的交易解决方案: 在单个平台上集成图表、数据源和经纪功能 更多…

WebGl/Three 粒子系统 人物破碎及还原运动

粒子 首先,加载模型,这是万千粒子的前身,模型对象由很多面构成,这些面又是由各个点构成的,所以可以将模型的几何体对象geometry赋给粒子对象,粒子物体用Points方式渲染 bloader.load("obj/female02/Fe…

PyTorch深度学习入门-2

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili 一、神经网络的基本骨架 --nn.Module Neutral network torch.nn — PyTorch 2.2 documentation * import torch from torch import nnclass xiaofan(nn.Module):…

C语言经典例题(31)

文章目录 1.交换数组2.统计二进制中1的个数3.交换两个变量(不创建临时变量)4.打印菱形5.字符串左旋 1.交换数组 将数组A中的内容和数组B中的内容进行交换。(数组大小一样) #include <stdio.h>void swap(int arr1[],int arr2[], int sz) {int tmp 0;for (int i 0;i &l…

GAN:对抗生成网络【通俗易懂】

一、概述 对抗生成网络&#xff08;GAN&#xff09;是一种深度学习模型&#xff0c;由两个神经网络组成&#xff1a;生成器G和判别器D。这两个网络被训练来协同工作&#xff0c;以生成接近真实数据的新样本。 生成器的任务是接收一个随机噪声向量&#xff0c;并将其转换为与真…

如何入行产品经理?

转产品经理第一点要先学基础理论知识&#xff0c;学了理论再去实践&#xff0c;转行&#xff0c;跳槽&#xff01; 学理论比较好的就是去报NPDP的系统班&#xff0c;考后也会有面试指导课&#xff0c;跟职场晋升课程&#xff0c;对小白来说非常合适了~&#xff08;可以去哔站找…

氟化氢冷凝回流反应瓶耐高温聚四氟烧瓶可灵活加工PTFE反应釜

四氟烧瓶又叫反应瓶、PTFE反应釜&#xff0c;常用于有HF或者冷凝回流反应等实验中&#xff0c;可作为接收瓶使用&#xff0c;可放入水浴器或油浴器里进行加热&#xff0c;平底稳定性好。相对于圆底烧瓶可直接放置&#xff0c;不需要铁架台等固定。 1.外观纯白不透明&#xff1b…