分析:
最近在搞Jedis,在引入jedis-2.9.0.jar和commons-pool2-2.4.2.jar后初始化JedisPoolConfig时,发现很多属性无法设置(如最大空闲连接等)编译报错,在查了很多资料换了很多版本jar包后也没有结果。
几经周折,终于让我发现,项目中某个第三方的SDK,这个jar包中也有redis.clients.jedis.JedisPoolConfig但是却没有继承org.apache.commons.pool2.impl.GenericObjectPoolConfig,而我要用的是jedis-2.9.0.jar中的redis.clients.jedis.JedisPoolConfig,项目默认引入的确实那个第三方的SDK中的,这才导致我初始化Jedis连接池时很多参数无法设置。重点来了!当两个jar包中存在Qualified Name完全相同也就是包名和类名完全相同的类的时候如何能够引入你想用的类?。
处理过程:
改变编译器优先加载的jar顺序
Eclipse:右键项目—>Properties—>Java Build Path—>Order and Export里面,通过Up/Down或Top/Bottom按钮即可改变jar包顺序。
Idea:File—>Project Structure—>Modules—>Dependencies里面,通过右侧的上下小箭头按钮即可改变jar包顺序。