FastDFS 官方提供的 Java 客戶端 fastdfs-client-java 未發布至 Maven 中央倉庫,項目接入時需手動編譯安裝至本地/私有倉庫。本文記錄從源碼構建到依賴配置的標準化流程。
# 1. 克隆官方倉庫(或下載 Release 源碼包)
git clone https://github.com/happyfish100/fastdfs-client-java.git
cd fastdfs-client-java
# 2. 使用 Ant 構建(項目預設構建工具)
ant
# 產出:build/fastdfs-client-java-{version}.jar
若項目已遷移至 Maven 結構(含 pom.xml),可直接執行:
mvn clean install -DskipTests
# 自動安裝至 ~/.m2/repository
若無 pom.xml 或需指定坐標,使用 mvn install:install-file:
mvn install:install-file \
-Dfile=D:\fastdfs_client.jar \
-DgroupId=org.csource \
-DartifactId=fastdfs-client-java \
-Dversion=1.25 \
-Dpackaging=jar \
-DgeneratePom=true
參數說明:
-Dfile:JAR 絕對路徑-DgroupId/artifactId/version:自定義坐標,建議遵循官方約定 org.csource:fastdfs-client-java:1.25 或 5.0.4-DgeneratePom=true:自動生成最小化 POM,避免傳遞依賴缺失<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.25</version> <!-- 或 5.0.4,與安裝時一致 -->
</dependency>
將 fdfs_client.conf 放入項目 src/main/resources 或類路徑下,代碼中加載:
// 方式 1:類路徑加載(推薦)
ClientGlobal.initByTrack("fdfs_client.conf");
// 方式 2:文件系統絕對路徑
ClientGlobal.init("D:/config/fdfs_client.conf");
fdfs_client.conf 關鍵配置:
tracker_server=192.168.1.100:22122
tracker_server=192.168.1.101:22122
connect_timeout=5
network_timeout=30
charset=UTF-8
http.tracker_http_port=8080
本地安裝僅對當前機器生效,團隊開發需部署至 Nexus/Artifactory:
mvn deploy:deploy-file \
-Dfile=fastdfs-client-java-1.25.jar \
-DgroupId=org.csource \
-DartifactId=fastdfs-client-java \
-Dversion=1.25 \
-Dpackaging=jar \
-DrepositoryId=releases \
-Durl=https://nexus.example.com/repository/maven-releases/
settings.xml 需配置 servers 認證信息。
| 現象 | 原因 | 解決 |
|---|---|---|
| ClassNotFoundException: org.csource.fastdfs.ClientGlobal | 依賴坐標不一致 / 未安裝成功 | 核對 mvn dependency:tree 確認坐標,重新 install:install-file |
| 配置文件找不到 | 未放入 classpath / 路徑錯誤 | 放入 resources,用 initByTrack;或用絕對路徑 init |
| 連接超時 | 防火牆/安全組未放行 22122/23000 端口 | 檢查 Tracker/Storage 端口通達性,telnet ip port 驗證 |
上傳報错 ERRNO 28 No space left | Storage 磁盤滿 | 擴容或清理過期文件,監控磁盤使用率 |
若項目大量使用,建議封裝 fastdfs-spring-boot-starter:
ClientGlobal 初始化FastdfsTemplate 封裝上傳/下載/刪除/生成 URL參考開源實現:tobato/FastDFS_Client(已整合 Spring Boot,推薦直接使用)。
掌握「源碼構建 → 本地安裝 → 私服部署 → 依賴引用 → 配置管理」完整鏈路,是處理非中央倉庫依賴的標準化能力,避免「我機器上能跑」的環境差異問題。