包冲突解决之-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.mzph.cn/news/748262.shtml

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

相关文章

Redis删除

一、del命令 del命令是Redis提供的一个常规的删除键的命令。它的语法如下&#xff1a; DEL key [key …] 其中&#xff0c;key是要删除的键名。可以指定多个键名&#xff0c;删除多个键。如果指定的键不存在&#xff0c;则会被忽略。 del命令会直接删除指定的键以及与之相关联…

float、double -- 精度丢失问题

任何使用二进制浮点数的编程语言都会有这个问题精度丢失问题,如 C++、C#、java 等。 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题. 这里有人有疑问,C++ cout 出来的数据是期望得到的值,就认为 c++ 没这个精度问题,这就是纯胡扯,自己写两行代码试试不就知道了…

Day44-sersync企业实时复制实战

Day44-sersync企业实时复制实战 1. sersync实时复制工具介绍1.1 sersync工具简介1.2 sersync特点1.3 sersync图解原理1.4 sersyncrsync实时复制方案项目实践1.4.1 图解项目方案架构及实现原理1.4.2 确保远程数据传输服务部署完成1.4.3 检查当前系统nfs01是否支持inotify实时监控…

vue使用elementPlus ui框架,如何给Dialog 对话框添加Loading 自定义类名显示隐藏

vue使用elementPlus ui框架时&#xff0c;如何给Dialog 对话框添加Loading 自定义类名&#xff0c;想要实现dialog对话框区域有loading效果 官方给出的这个API配置项customClass&#xff0c;使用不太明确。暂时无法实现绑定class。 最后的实现方式&#xff1a; <template&…

吐槽FineDataLink工具Format函数处理日期转字符串格式的说明文档

一.背景 为公司师带徒的任务做些记录。 二.文档存在的问题 1.文档情况 FORMAT-格式转换- FineBI帮助文档 FineBI帮助文档 函数定义&#xff1a; FORMAT(object,format) formart的格式有哪些呢&#xff1f;我们截图看看&#xff1a; 2.文档说明不足问题 同事的需求是把时…

gen_circle_

read_image (Image, fabrik) gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, 6.28318, positive, 1) gen_circle_sector (CircleSector, 200, 200, 100.5, -0.392699, -1.1781) gen_circle_sector 创建一个圆形扇区。 gen_region_contour_xld 从 XLD 轮廓创建一个区…

AI人工智能培训讲师ChatGPT讲师叶梓培训简历及提纲ChatGPT等AI技术在医疗领域的应用

叶梓&#xff0c;上海交通大学计算机专业博士毕业&#xff0c;高级工程师。主研方向&#xff1a;数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家&#xff0c;市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

[数据集][目标检测]牛羊检测数据集VOC+YOLO格式3393张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3393 标注数量(xml文件个数)&#xff1a;3393 标注数量(txt文件个数)&#xff1a;3393 标注…

免费阅读篇 | 芒果YOLOv8改进109:注意力机制SimAM:用于卷积神经网络的简单、无参数注意力模块

免费阅读篇|芒果YOLOv8改进109&#xff1a;注意力机制篇SimAM&#xff1a;用于卷积神经网络的简单、无参数注意力模块 &#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#x…

C#中的隐式操作符,如何简化类型转换

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

RocketMQ学习笔记四(黑马)项目

课程地址&#xff1a; 1.Rocket第二章内容介绍_哔哩哔哩_bilibili &#xff08;视频35~88&#xff0c;搭建了一个电商项目&#xff09; 待学&#xff0c;待完善。

JVM相关

文章目录 JVM的类加载过程JAVA内存泄露内存泄露的常见原因内存泄露的影响问题排查 JVM的调优java四种引用类型 JVM的类加载过程 JVM的类加载过程包括加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09…

找准方向选CRM客户管理系统!2023年排行榜推荐

本文将为大家带来2023有哪些好用CRM客户管理系统&#xff1f;CRM系统排行榜基于品牌知名度、功能、产品实力、系统稳定性、用户体量等多重因素考量。其中Zoho CRM、红圈CRM等产品市场表现优异入选此次榜单。 1.Zoho CRM 公司成立时间&#xff1a;1996年 Zoho&#xff08;卓豪…

【算法】AC自动机的优化:增量更新与删除

一、概述 AC自动机&#xff08;Aho-Corasick Automation&#xff09;是著名的多模匹配算法&#xff0c;源于贝尔实验室&#xff0c;并且在实际应用中得到广泛的引用&#xff0c;且具有以下特点&#xff1a; 只需要扫描一次文本&#xff0c;即可获取所有匹配该文本的模式串复杂…

CSS扩展选择器

文章目录 1. 并集选择器2. 交集选择器3. 后代选择器4. 子代选择器5. 兄弟选择器5.1. 相邻兄弟选择器5.2. 通用兄弟选择器 6. 属性选择器7. 伪类选择器7.1. 动态伪类7.2. 结构伪类7.3. 否定伪类 8. 伪元素选择器9. Google 改进案例 1. 并集选择器 选中多个选择器对应的元素。一…

如何在Linux上使用git远程上传至gitee托管(add-commit-push指令详解)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

力扣209. 长度最小的子数组

思路&#xff1a;题目是 数组和 > target&#xff0c;不是等于target 双指针法&#xff1a;用for循环中的 r 来界定右边界的下标&#xff0c;右边界每移动一位&#xff0c;左边界可能需要移动多位&#xff0c;所以内部再用while, 当满足 数组和>target时&#xff0c;记录…

C语言基础之结构体

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

Flutter 添加三方库后,运行不起来或缓慢问题(Gradle)

背景 在Flutter项目&#xff08;包含Android平台&#xff09;初期&#xff0c;经常发现在Flutter添加了一个三方库依赖之后&#xff0c;重新运行的时候就要等很久&#xff0c;或者直接报错。查看详细日志会发现&#xff0c;耗时一般都是由于新的三方库也有自己的Android的代码…

RISC-V Optimization Guide(笔记)

官网发表的文章地址&#xff1a;RISC-V Optimization Guide B站有人做过解读视频&#xff0c;这篇文章也是看视频时做的笔记&#xff1a;视频地址 一、标量整数优化 1.1 常量的具体化 使用lui/addiw将立即数加载至寄存器&#xff0c;当立即数低12位的最高位为1时&#xff0c…