記一次springboot配置redis項目啟動時的一個奇怪的錯誤
springboot配置redis項目啟動時的錯誤
在剛開始學redis時,我照著網上的教程,把redis和jedis整合到spring boot,整合完畢後,啟動項目總是失敗
總是爆出下面的錯誤
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.data.repository.config.RepositoryConfigurationSource
***************************
APPLICATION FAILED TO START
***************************
Description:
An attempt was made to call the method org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/lang/String; but it does not exist. Its class, org.springframework.data.repository.config.RepositoryConfigurationSource, is available from the following locations:
jar:file:/D:/m2/repository/org/springframework/data/spring-data-commons/2.0.10.RELEASE/spring-data-commons-2.0.10.RELEASE.jar!/org/springframework/data/repository/config/RepositoryConfigurationSource.class
It was loaded from the following location:
file:/D:/m2/repository/org/springframework/data/spring-data-commons/2.0.10.RELEASE/spring-data-commons-2.0.10.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.data.repository.config.RepositoryConfigurationSource
2018-11-22 13:03:51.398 INFO 2196 — [ main] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1a451d4d: startup date [Thu Nov 22 13:03:50 CST 2018]; root of context hierarchy
Process finished with exit code 1
然後我在網上找瞭很久,都沒有關於這個錯誤的解決辦法,偶然看到一篇博客,它在啟動項目時也出現瞭類型錯誤,也是jar包沖突,然後那個博主是通過改redis和jedis的版本號解決的,我也把版本號都改成和那個博主相同的,但啟動後還是出現相同的錯誤。
後來就想如果我把版本號都去掉,讓“spring-boot-starter-parent”自動為我們提供對應版本的jar包,這樣就可以避免自己指定版本號時,可能會有一些意想不到的沖突。於是我就把redis和jedis的版本號都去掉,果然項目就可以正常啟動瞭~~
What a strange error..
解決springboot項目啟動時redis報錯
出現ERR Client sent AUTH, but no password is set的問題
首先看下我springboot配置redis的部分如圖:
顯然上面配置瞭redis的啟動密碼為123456,
本地redis版本為3.0.1 在redis.windows.conf文件中requirepass內容也修改瞭密碼為123456,這裡說下,在去除requirepass前面的#號時一定註意還有一個空格要去除,不然會報錯:
Invalid argument during startup: unknown conf file parameter : requirepass
這時,說明redis密碼與springboot的一致,接下來就是啟動redis再啟動springboot。
我員來的啟動方式就是進入到redis的安裝目錄,執行redis-server.exe,然後正常啟動。但是在啟動springboot後,調用redis時就報錯瞭,如圖:
一開始以為是我Pom.xml文件中引入的為2.9.0的redis依賴導致的版本不兼容,一直去找Redis的2.9.0的安裝包竟然網上沒有。浪費瞭半天時間。
後來才發現,這個報錯是告訴我沒有設置密碼。原因就是啟動時的方法錯誤。
請務必記住,啟動本地redis,如果設置瞭密碼記得帶上配置文件,啟動命令完整為:
redis-server.exe redis.windows.conf
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 詳解springboot中各個版本的redis配置問題
- springboot 集成redis哨兵主從的實現
- 優化spring boot應用後6s內啟動內存減半
- Spring Boot 2.7.6整合redis與低版本的區別
- SpringBoot 集成 ShedLock 分佈式鎖的示例詳解