實操:No beans of 'FastDFS Client' type found 的解決方法

  • 2019 年 10 月 5 日
  • 筆記

前言: 今天接手了同事之前做的一個小項目,裡面涉及到了 FastDFS 的使用。但是當我在本地運行項目的時候,卻報了 Could not autowire No beans of 'FastDFS Client' type found 相關的錯誤。 接下來就詳細描述一下 FastDFS 報錯的解決方法。

一、問題描述

啟動 Application 類報錯:

required a bean of type 'org.springframework.fasfdfs.server.FastDFSClient' that could not be found.

二、問題分析

如下圖所示:根據報錯資訊發現,並不缺少 jar 包,報錯提示里所需要的類也有,不知道為什麼會報錯。

綜上所述,再結合約事可以通過 idea 來正常運行,所以懷疑是 FastDFS 相關 jar 包可能存在依賴衝突。

三、解決辦法

1、首先將 Maven 倉庫中 FastDFS 相關 jar 包刪除,共兩個,分別是:fastdfs-client-java-1.27-SNAPSHOT.jar 和 spring-boot-starter-fastdfs-1.0-SNAPSHOT.jar ,其中後者依賴前者。

2、由於無法從中央倉庫中下載 FastDFS 的上述 jar 包,所以需要手動構建源碼生成 jar 文件。下載 fastdfs-client-java 和 spring-boot-starter-fastdfs 源碼到本地,配置好源碼項目的 Maven 地址後,執行 mvn clean install 。執行成功後,對應的 Maven 倉庫中就自動有了上述兩個 jar 包。需要特別說明的是:需要先打 fastdfs-client-java 的 jar 包,因為 spring-boot-starter-fastdfs 項目打包依賴 fastdfs-client-java-1.27-SNAPSHOT.jar 。

3、採用 Invalidate and Restart 的方式來重啟 idea ,這樣可以讓 idea 重新載入項目。

4、再重新運行 FastDFS 項目,啟動成功!

關於 fastdfs-client-java 和 spring-boot-starter-fastdfs 的源碼程式我已經上傳到了百度雲,可私信本微信公眾號【大數據實戰演練】回復 190917 獲取,或者自己在 github 等開源社區上找,都可以。

四、總結

1、問題小結

關於這個問題我進行了反覆測試,假如自己有 fastdfs-client-java-1.27-SNAPSHOT.jar 和 spring-boot-starter-fastdfs-1.0-SNAPSHOT.jar 包,採用

mvn install:install-file -Dfile="xxx.jar" -DgroupId=xxx -DartifactId=xxx -Dversion=xxx -Dpackaging=jar  

的形式將本地 jar 包導入到 Maven 倉庫中。雖然可以成功導入,但啟動項目依舊會報上述錯誤,所以最穩妥的方式還是下載源碼並打包,通過這樣的方式將需要的 jar 包導入到 Maven 倉庫中。

2、maven 相關命令簡介

  • mvn clean : 清空編譯文件。
  • mvn test : 運行測試用例。
  • mvn compile : 編譯項目。
  • mvn package : 打包項目。
  • mvn install : 安裝 jar 包到 Maven 的本地倉庫中。

注意點:執行 mvn test ,會先執行 mvn compile ;執行 mvn package ,會先執行 mvn compile 和 mvn test ;執行 mvn install ,會先執行 mvn package 。

Exit mobile version