记一篇JAR冲突的问题:Inceptor-Ddriver-4.7.1
吐槽背景:
前阵子领导要求一应服务上Docker,其中包含一个连接Hadoop集群,认证kerberos后通过将SQL传给Inceptor(hive)查数据这么一个功能。
老项目部署条件是:Tomcat7 + 行内框架(类似SSM) + JDK1.7.0_79 + Linux
新环境是把 Tomcat7 升级到 Tomcat8,JDK升级到 Open1.8,加Docker;
本来是想就相当于把部署的东西平移到docker上,换汤不换药,稀松平常就好,结果因为 Driver 驱动包引发了一个血案!
InceptorDriver 驱动包里有大量的非依赖方式引入的包,导致 mvn dependency 根本查不出是哪里有冲突,而tomcat8 又会因为环境问题导致加载类顺序不同使项目在这边好,到了服务器上就不行的问题,然后一报错就是sun.sec…某个类或方法找不到。
最开始通过调整 tomcat8 的 Context.xml 的 preresource 来优先加载有冲突的jar,但是行里投产tomcat这种介质是一致的还不许改,就算硬改,当容器重启时,从新拉介质又完蛋。。。
最终还是一个同事因为他连接的hbase 没有引用InceptorDriver 只引用了Hadoop-client(厂商提供的,auth、common等集合体)我突然想到了 InceptorDriver 里面可能有与Hadoop-Auth重合的部分。因为在调整tomcat8的Context.xml时,将hadoop-auth这个jar优先加载可以回避这个问题,然后我将 InceptorDriver 解压一看,果然如我所料,手动将 InceptorDriver 重合Hadoop-auth部分删除掉,kerberos 认证通过,问题解决。
重点:
当发生什么什么类找不见、方法找不见的时候,先看看
1)是不是真的没有引对应的依赖
2)如果依赖已经引用,那多半是 jar 冲突
a) mvn dependency: tree -Dverbose 找到有冲突的地方,可以将结果通过正则匹配出来 :grep “conflict”
b) 查看有哪些地方引用到了这个jar,都是什么版本,哪个是你需要的
mvn dependency: tree -Dverbose -Dincludes=groupId:artifactId
3)如果没有发现有冲突,则有可能是某些依赖不是通过mvn传递的,而是,直接手动打入,或是“不小心”与别人的包类全路径撞车的情况,这个时候基本是先改自己的,再改依赖的,如果框架和框架撞车,那就跑路吧,嘿嘿嘿…
记一篇JAR冲突的问题:Inceptor-Ddriver-4.7.1相关推荐
- 《大道至简》的幕后故事(2):“愚公移山记”人物篇
引子 ====== "愚公移山记"文言和白话两篇附录,是<大道至简>第二版中重要的组成部分.但我们这些读惯了技术书的人,大概是不会象文科生一样,一边考证着一边读古文, ...
- 《大道至简》的幕后故事(2):“愚公移山记”人物篇 1
2007年04月18日 01:05:00 引子 ====== "愚公移山记"文言和白话两篇附录,是<大道至简>第二版中重要的组成部分.但我们这些读惯了技术书的人,大概是 ...
- 《大道至简》的幕后故事(5):“愚公移山记”军事谋略篇
2007年05月01日 00:53:00 引子 ========== 上一节写的地理,这一节只讲策略.我自己读时,时时觉得<大道至简>一书写到末了,未见得有一篇古文精彩,只是这篇古文,愿细 ...
- 《大道至简》的幕后故事(5):“愚公移山记”军事谋略篇 1
引子 ========== 上一节写的地理,这一节只讲策略.我自己读时,时时觉得<大道至简>一书写到末了,未见得有一篇古文精彩,只是这篇古文,愿细读的人并不太多罢了. 这篇军事谋略,与工程 ...
- Maven Jar冲突解决方案
MavenJar冲突解决方案 记一次在做项目过程中 遇到的jar冲突问题 话不多说 先报出错异常 //异常在这 SLF4J: Detected both log4j-over-slf4j.jar AN ...
- JAR冲突问题的解决以及运行状态下如何查看加载的类
今天碰到群里小伙伴问,线上程序好像有多个不同版本的Netty包,怎么去看到底加载了哪一个? 在说如何看之前,先来说说,当你开始意识到项目里有多个不同版本的Jar包,都是因为遇到了这几个异常: 1.ja ...
- 第二空间计算机最新破解,我的J4125黑群晖折腾记 - 软件篇:无需U盘引导及固态硬盘扩充空间容量法...
我的J4125黑群晖折腾记 - 软件篇:无需U盘引导及固态硬盘扩充空间容量法 2020-10-16 18:33:49 53点赞 418收藏 25评论 [前言]:继上一篇<我的J4125黑群晖折腾 ...
- 记一次validator jar冲突导致的启动异常
2019独角兽企业重金招聘Python工程师标准>>> 场景: jersey启动报了一个异常 java.lang.NullPointerException: null at org. ...
- 工作-2017.07.30-周记总结篇(一)
[MySQL乱码问题] [MyBatis动态查询] [SQL语法中的Select count(*)和count(1)的用法及其他连接查询的使用方法] [MyBatis中的association标签有什 ...
- Android 关于::app:clean :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE,引用jar冲突问题...
错误提示: Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTes ...
最新文章
- 简化PHP开发的10个工具
- mxnet基础到提高(22)-C++-常量和变量
- SpringCloudGateway 集成 nacos 整合实现动态路由_04
- 计算机进位法,计算机基础知识--进位计数制.docx
- js中prototype用法
- Linux (x86) Exploit 开发系列教程之八 绕过 ASLR -- 第三部分
- excel中如何动态地创建控件以显示查询结果_一起学Excel专业开发02:专家眼中的Excel及其用户...
- java的VIRT高的问题理解
- php fopen下载文件,php fopen下载远程文件的函数 | 学步园
- VS Code 中文注释显示乱码
- sql92和sql99的区别
- 谷歌开源缓存框架Guava Cache
- linux格式化后恢复 vmdk恢复,根据flat.vmdk文件恢复磁盘(完善版)
- Nicholas C. Zakas谈怎样才能成为优秀的前端工程师
- maven下载Nexus私服jar包,报错Not authorized
- 共享纸巾机系统开发,关于Switch的使用
- AI面相手相V3.2.0无限多开版h5公众号版本源码(含搭建教程+运营文案图片)
- IDEA 官方最认可的神级框架!SpringBoot 已成气候!
- 单片机编程实现用网址域名获取服务器IP,超简单,一句话
- 计算机如何获取目标ip,如何在自己的电脑查看别人电脑的ip地址?教你,马上成为电脑高手...
热门文章
- python怎么判断日期是星期几_【Java编程基本功】(八)逆序输出、是否为回文数,判断星期几,升序排列...
- Windows10 的简单脚本 杀死所有表格程序
- Nvidia搞笑Intel:CPU vs GPU
- docker下配置linux7.2
- jQuery的AJAX请求中contentType和dataType的区别
- gradle 区分系统_Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件...
- mysql主从复制不同步案例_mysql主从复制不同步的问题
- 编写dll 关于declspec(dllexport)和declspec(dllimport)
- 使用批处理文件,自动设置计算机IP地址
- 网络工程师 名词解释