包冲突解决之-invalid constant type: 18

  1. 背景
    1. 现象一:引入了一个包A,服务突然起不来了,后台有报错信息,Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'xxx' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    2. 现象二:多次重启服务,有一定的概率能够启动(初步怀疑是包冲突)
    3. 启动不了的时候,报错的bean写法如下
      1. package mypackage;
        
        @Slf4j
        @MyComponent
        @RequiredArgsConstructor(onConstructor = @__(@Autowired))
        public class MyBean{
        XXX
        }
    4. 上述他使用自己定义的注意,然后通过自定义的beanDefinitionRegistar扫描这类bean
      public class MyComponentConfigRegister implements ImportBeanDefinitionRegistrar {
      
          public void registerBeanDefinitions(@NotNull AnnotationMetadata importingClassMetadata, @NotNull BeanDefinitionRegistry registry) {
            
              //获取到所有包含这些注解的类之后,我们添加到spring容器中去即可
              Set<Class<?>> annotated = new Reflections(new ConfigurationBuilder().forPackage("mypackage").setScanners(Scanners.values())).get(TypesAnnotated.with(MyComponent.class).asClass());    
      }
  2. 初步追查,bean找不到问题
    1. 现象很简单,spring中最常见的问题了,少了一个bean;背景也只自定义一个beanDefinitionRegsitar扫描背@MyComponent注明的类。
    2. debug这个MyComponentConfigRegister 。发现了一个很奇怪的问题,
      1. 核心代码, Set<Class<?>> annotated = new Reflections(new ConfigurationBuilder().forPackage("mypackage").setScanners(Scanners.values())).get(TypesAnnotated.with(MyComponent.class).asClass());    
      2. 扫描出来的annotated就是没有MyBean这个类
      3. 可以观察到他的反射包使用的是Reflections类,来自jar包reflections
    3. 问题是,为啥包里面没有有这个类MyBean,通过Reflections就是扫描不到呢??
    4. debug过程中,另外发现一个问题,同一个包路径下的类,MyBean1,就是可以被扫描到,但是Mybean就是不行。
      package mypackage;
      
      @Slf4j
      @MyComponent
      @RequiredArgsConstructor(onConstructor = @__(@Autowired))
      public class MyBean1{
      XXX
      }
  3. 继续追查,Reflections获取不到反射的问题
    1. debug Reflections类,在他的scan方法里面初见端倪,
    2. 处理mybean的时候,会报错误,invalid constant type: 18
    3. 因为,日志级别是trace,所以服务器日志上看不到这个错误信息。
  4. 继续追查,invalid constant type: 18,是什么问题
    1. stackoverflow上已经有类似的问题,Reflections - Java 8 - invalid constant type - Stack Overflow
    2. ​​​​​​帖子的结论很简单:Reflections依赖的javassist版本太低了,不支持java8的特性。例如stream的使用
    3. 至此,问题定位到。而且Mybean的写法和MYbean1的写法中区别就是,myBean使用了stream,所以Reflections在扫描的时候报错了。
  5. 问题解决:
    1. 升级Reflections依赖的javassit的版本
  6. 继续:
    1. 到这里问题应该解决了,发布代码问题也确实解决了。
    2. 但是,,,好像还有一个遗留的疑问,最开始的时候,为啥重启多次也能解决呢。
    3. 看看最初的版本依赖,,其第一个有问题的jar包路径更短。理论上是100%错误,不应该重启多次就好
    4. 最终发现,2个包的坐标不一样,他们的groupid不一致导致的,2个jar包不会报冲突,在jvm启动时加载那个jar包都有一定的几率,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【PythonCode】力扣Leetcode6~10题Python版

【PythonCode】力扣Leetcode6~10题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C、…

防范服务器被攻击:查询IP地址的重要性与方法

在当今数字化时代&#xff0c;服务器扮演着重要的角色&#xff0c;为企业、组织和个人提供各种网络服务。然而&#xff0c;服务器也成为了网络攻击者的目标之一&#xff0c;可能面临各种安全威胁&#xff0c;例如DDoS攻击、恶意软件攻击、数据泄露等。为了有效地防范服务器被攻…

C语言基础之结构体

文章目录 一、结构体1、结构体概述2、结构体类型的定义方式&#xff08;1&#xff09;先定义结构体类型&#xff0c;再定义结构体变量&#xff08;2&#xff09;结构体类型、变量同时定义&#xff08;3&#xff09;一次性结构体 3、结构体成员的初始化(1)结构体初始化(2)清空结…

pytorch升级打怪(三)

数据集合数据加载器 简介加载数据集迭代和可视化数据集为您的文件创建自定义数据集__init____len____getitem__ 准备您的数据以使用DataLoaders进行训练通过DataLoader进行遍载 简介 处理数据样本的代码可能会变得混乱且难以维护&#xff1b;理想情况下&#xff0c;我们希望我…

软考高级:企业应用集成概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

内网渗透之路:常用命令助力信息深度探索

1、查询网络配置信息 ipconfig /all 2、查询操作系统及软件信息 &#xff08;1&#xff09;查询操作系统和版本信息 英文操作系统 systeminfo | findstr /B /C:"OS Name" /C:"OS Version" 中文操作系统 systeminfo | findstr /B /C:"OS 名称&q…

论文阅读:FCB-SwinV2 Transformer for Polyp Segmentation

这是对FCBFormer的改进&#xff0c;我的关于FCBFormer的论文阅读笔记&#xff1a;论文阅读FCN-Transformer Feature Fusion for PolypSegmentation-CSDN博客 1&#xff0c;整体结构 依然是一个双分支结构&#xff0c;总体结构如下&#xff1a; 其中一个是全卷积分支&#xff…

【Flutter 面试题】什么是Widget,Stateful Widget和Stateless Widget之间的区别?

【Flutter 面试题】什么是Widget&#xff0c;Stateful Widget和Stateless Widget之间的区别&#xff1f; 文章目录 写在前面解答补充说明StatelessWidget 示例StatefulWidget 示例 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextArea)

多行文本输入框组件&#xff0c;当输入的文本内容超过组件宽度时会自动换行显示。 高度未设置时&#xff0c;组件无默认高度&#xff0c;自适应内容高度。宽度未设置时&#xff0c;默认撑满最大宽度。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&…

会员项目定价卡css3特效

会员项目定价卡css3特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 会员项目定价卡css3特效代码

WIFI 7技术的应用前景

随着WIFI 7技术的不断成熟和普及&#xff08;如果对WIFI 7技术不太了解的&#xff0c;可以点击链接去查看一下这篇文章WIFI7&#xff1a;开启无线通信新纪元 &#xff09;&#xff0c;我们正迎来一个数字连接的全新时代。WIFI 7作为新一代无线网络标准&#xff0c;将极大的改变…

【矩阵】48. 旋转图像【中等】

旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《适应分布式资源渗透率提高的配电网网元规划方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

springboot276基于JS的个人云盘管理系统的设计与实现

个人云盘管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装个人云盘管理系统软件来发挥其…

了解常用测试模型 -- V模型、W模型

目录 V模型 测试流程 特点 优、缺点 w模型/双v模型 测试流程 特点 优、缺点 V模型 测试流程 用户需求&#xff1a;产品经理将用户需求转变为软件需求 需求分析与系统设计&#xff1a;验证需求是否正确&#xff0c;确定编程语言和框架 概要设计&#xff1a;项目结构设…

大语言模型系列-中文开源大模型

文章目录 前言一、主流开源大模型二、中文开源大模型排行榜 前言 近期&#xff0c;OpenAI 的主要竞争者 Anthropic 推出了他们的新一代大型语言模型 Claude 3&#xff0c;该系列涵盖了三个不同规模的模型&#xff1a;Opus、Sonnet 和 Haiku。 Claude 3声称已经全面超越GPT-4。…

Antd组件Input在暗黑模式下,autoComplete导致的背景色问题

Antd的组件暗黑模式&#xff0c;默认Input的背景色是暗黑的&#xff0c;但是浏览器支持自动填充功能的话&#xff0c;就会变成这样&#xff0c;看着就难受 两种解决方法&#xff1a; 一、关闭自动填充功能 <Input autoComplete"off" /> 二、添加样式&#x…

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类&#xff0c;用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时&#xff0c;编码格式是一个重要的问题&#xff0c;因为它决定了如何解释文件中的字符数据。通常情况下&#xff0c;Z…

[.NET项目实战] Elsa开源工作流组件应用(一): Elsa工作流简介

Elsa工作流简介 工作流是什么&#xff1f; 引用维基百科中对工作流的解释&#xff1a; 是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模&#xff0c;即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算…

考研模拟面试-答案【攻略】

考研模拟面试-答案【攻略】 前言版权推荐考研模拟面试-答案前面的问题通用问题专业题数据结构计算机网络操作系统数据库网络安全 手写题数据结构操作系统计算机网络 代码题基础代码题其他代码题 后面的问题补充题目 基础代码题答案链栈循环队列1循环队列2哈希表 最后 前言 202…
最新文章