SpringBoot訪問Redis報錯java.lang.NoSuchMethodError: redis.clients.jedis.JedisPoolConfig.setMinEvictableIdleTime


完整報錯信息:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed;
nested exception is java.lang.NoSuchMethodError: redis.clients.jedis.JedisPoolConfig.setMinEvictableIdleTime(Ljava/time/Duration;)V] with root cause

java.lang.NoSuchMethodError: redis.clients.jedis.JedisPoolConfig.setMinEvictableIdleTime(Ljava/time/Duration;)V

 

原因1:

Maven中有其它組件依賴了舊版的jedis,需要排除

 

原因1的解決方法:

在使用了舊版jedis的組件的<dependency></dependency>中加入排除舊版jedis的依賴

<exclusions>
    <exclusion>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </exclusion>
</exclusions>

重新加載Maven的依賴組件,重新運行即可。

 

原因2:

JedisPoolConfig和JedisSentinelPool使用了apache.commons的commons-pool2包

雖然編譯代碼時不會報錯,但運行時會提示找不到包。(懷疑是用反射使用的原因)

 

原因2的解決方法:

在pom.xml的<dependencies></dependencies>中加入以下配置:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.11.1</version>
</dependency>

重新加載Maven的依賴組件,重新運行即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM