修改/升级jar包中内嵌jar包的版本号

参考资料:

参考文章icon-default.png?t=M4ADhttps://blog.csdn.net/u011482647/article/details/122101243


实现原理:

  • 根据JVM加载规则,jar包中引用的第三方jar包,和直接从pom文件或者直接导入存储的路径是一样的,就比如下面的例子:
  • 我们引入了seata包,里面内嵌了阿里巴巴的fastJson包

修改/升级jar包中内嵌jar包的版本号_第1张图片

修改/升级jar包中内嵌jar包的版本号_第2张图片

  •  然后maven仓库的存储路径是:

修改/升级jar包中内嵌jar包的版本号_第3张图片

  •  seata包中的程序,需要fastJSON就会到com.alibaba.fastJson目录下找本项目引用的版本

修改/升级jar包中内嵌jar包的版本号_第4张图片

 

  •  但是由于fastJson1.2.83以下的版本有安全漏洞,所以我们需要将seata中的fastJson进行升级,我们只需要将这个低版本的去掉,然后引入一个高版本的即可

修改/升级jar包中内嵌jar包的版本号_第5张图片

  •  这样并不会影响到seata以及整个项目的使用,因为他们都是在com.alibaba.fastjson文件夹下寻找的

总结:总而言之,即使是jar包引用的其他第三版jar包,也是独立的,可替换的,无论谁加载的路劲都是一样的。


实际问题:

  • 最近fastJson和LogBack相继爆出安全漏洞,老板也让我们抓紧修复,fastJson修复方法同上,logBack的修复方法,参考一位老哥的,见参考资料
  • 过程是:
  • (1)先将logback的上游jar包剃掉,通常是:spring-boot-starter-logging

修改/升级jar包中内嵌jar包的版本号_第6张图片

  • 然后在重新引入即可,pom关键内容如下: 

 

        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    spring-boot-starter-logging
                    org.springframework.boot
                
            
        

        
            org.springframework.boot
            spring-boot-starter-logging
            
                
                    log4j-api
                    org.apache.logging.log4j
                
                
                    log4j-to-slf4j
                    org.apache.logging.log4j
                
                
                    logback-classic
                    ch.qos.logback
                
            
        

        
            ch.qos.logback
            logback-classic
            ${logback.version}
            
                
                    logback-core
                    ch.qos.logback
                
            
        

        
            ch.qos.logback
            logback-core
            ${logback.version}
        
  • 另外提一句,IDEA的依赖树,内嵌的对于查找某个jar很好用,新窗口的查找太好用 

 修改/升级jar包中内嵌jar包的版本号_第7张图片

 

你可能感兴趣的:(error,bug,修改jar,jar,java,开发语言)