一次jar包版本不匹配的坑
问题背景
开发了一个程序,大量使用了httpclient,在idea运行正常,但使用maven打包时出错
无法访问org.apache.http.annotation.ThreadSafe

pom引入httpclient 版本4.5.2,idea自动引入了依赖包httpcore 4.4.9 及 httpmime 4.5.5

报错无法访问类,第一反应就是看看这个类到底在不在,是不是jar包未引入或者版本不对。
于是找到httpcore的jar包一看

哎哟,真没有~
带着疑问来到搜索引擎,让我使用httpcore 4.3.2

这个版本有这个ThreadSafe,但是不难想到肯定有其他问题,毕竟这个版本相差有点大。

还是换回httpcore 4.4.9吧

于是下载各个版本的httpcore ,发现在4.4.4以后就抛弃了@ThreadSafe
那就用4.4.4试一下

好像可以了
究竟是哪里还在使用@ThreadSafe呢
在httpclient 4.5.2里是有使用的,比如org.apache.http.impl.cookie包内的很多类。而在4.5.3版本则没有使用了。
所以最后使用的是 httpclient 4.5.3 ,httpcore 4.4.9 ,httpmime 4.5.5
网友评论