服务器jar包冲突怎么修改
① Android引入多个jar包,冲突问题解决方案
Android引入多个jar包,冲突问题解决方案(引入jar包,即本地文件) 以引用加载第三方框架中也有okhttp3 okio冲突讲解
(PS:如果不知道是那个jar冲突可以用指令gradlew app:dependencies查看)
1.找到项目中的libs->对应冲突的第三方包.jar。
3.用解压工具打开(不是解压乱尘,是打开。比如windows下可用360解压打开)。
4.删掉重复引用的包(okhttp3 + okio)。
5.重新打开虚唤项目,等待编译。
6.可能出现innerClass mission警告,可以忽略掉,或者clean build。
7.如果还报错的话那么在app build.gradle加入哗誉禅:
packagingOptions {
exclude 'META-INF/proguard/okhttp3.pro'
}
温馨提示:
如果你的项目是因为刚刚添加了某个网络加载依赖导致的,那么你就查看下这个库下的哪一个依赖冲突了,在添加这个依赖的时候把它给过滤掉。具体写法如下。
implementation ('com.***.***:XXX:1.2.0'){ // 所加的第三方框架
exclude mole: 'okhttp:3.10.0'
}
//或者要把组名一起添上去
implementation ('com.***.***:XXX:1.2.0'){ // 所加的第三方框架
exclude group: 'com.squareup.okhttp3'
}
② jar包冲突解决方法
今天圆启启动工戚坦程时候报高腔桐了一个slf4j相关的jar包冲突的问题,java.lang.NoSuchMethodError(找不到具体方法),在idea中发现slf4j-api有两个不同的版本,解决办法如下
在idea右侧maven窗口中选中模块名称,右击选择jar包依赖树
按ctr+f输入冲突的jar包就可以找到它的继承关系,找到根坐标,然后在pom.xml中找到对应的坐标exclusion就ok啦
jar包冲突时候也有可能如下报错
1、java.lang.ClassNotFoundException(找不到类)
2、java.lang.NoSuchMethodError(找不到具体方法)
3、java.lang.NoSuchFieldError(字段错误)
4、java.lang.LinkageError(类错误 这个我没怎么见过)
③ jar包冲突的解决方法
一般就是在报错里找,如下,是我的报错信息,如下所示,这里比较明显的是org.apache.logging.slf4j.Log4jLoggerFactory这个类,报错的意思是说,实际构建的是用的就是上面的那个类,用了之后就开始报错了。
所以问题就很明确了,肯定是这个类不该用,肯定是不同的jar包中,出现了相同的类名导致的。
如果你使用idea开发的话,可闭液以双击shift,输入用org.apache.logging.slf4j.Log4jLoggerFactory类,然后点击如图的小按钮,找到对应的jar包,就找到了它的group,name,version等信息。
假设你用的是gredle,你可以跑一下dependencies,就可以拿到它们之间的全部的依赖,如果你用的maven的话,同样的道理,只需要在idea中点击,maven就可以了,
可以把2.2中跑出来轿局物得到的数据,粘贴在nodepa++中,然后搜索2.1中,对应的group,或是name都可以,通过这一步,就可腊郑以定位到是哪个jar包引进冲突的包
gradle中的做法是如图:
④ 解决项目中jar包冲突的终极方案
项目中经常会碰到jar包冲突,而很多情况下冲突的包是由于其他包依赖引入的,这个时候我们无法直接分辨冲突包是哪个依赖导致的,现在教你如何快速定位冲突包由哪个依赖引入的。
1.先配置gralde环境变量
具体配置方式参考: https://blog.csdn.net/u010042669/article/details/80914656
2.利用gradle命令找到项目中每个引用的依赖包,比如 你项目中使用com.android.support:cardview-v7:26.0.2中,而这个依赖会引入 com.android.support:support-annotations:26.0.2
命令:gradle host:dependencies
先进入要查询的项目根目录,host是application类型敬段扰 mole,通过这行命令可以遍历这个mole中每个依赖的所有间接引用
结果如下:
通过这种方式就可以轻松定位引起冲突的依赖
3.找到冲突的亮旦包后,使用exclude group方式剔除
4.重新build后,再使用gradle host:dependencies查看依赖,已经没了
5.最后,燃雹引来了胜利,可以开始庆祝了!!!
⑤ java jar包冲突怎么解决
由于,lib目录中的 struts.jar 和 struts-core-1.3.8.jar 存在冲突
导致部分服务器上应用启动报错,或访问后台JSP页面时报TILES标签错误,
经排查,其实struts.jar中的class文件在
struts-core-1.3.8.jar
struts-taglib-1.3.8.jar
struts-tiles-1.3.8.jar
中均已存在,且宏友版本要高于struts.jar中的class
struts.jar为version1.0
而巧瞎struts-core-1.3.8.jar,truts-taglib-1.3.8.jar,struts-tiles-1.3.8.jar为version1.2
在struts1.2中引用tiles tld的写法发生变蔽宽槐化
故解决办法如下:
1.去掉原strtus.jar
2.去掉struts-tiles.tld
3.将所有JSP页面中的
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
改为
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>