jcifs.smb.SmbException: Failed to connect: 0.0.0.0<00>/IP 解決方案
阿新 • • 發佈:2018-12-19
因為業務原因,現在內網系統使用共享資料夾方式進行檔案的輸入輸出,Java開發,使用的Jar包為jcifs,在本地測試完全正常,部署到正式環境後出現:
jcifs.smb.SmbException: Failed to connect: 0.0.0.0<00>/IP的異常,解決方式如下:
分析原因
上述部分明確提到了,jsifs僅支援SMB1,而不支援SMB2/SMB3,所以先從伺服器支援協議入手
伺服器為windows伺服器,在伺服器上開啟powershell控制檯(在開始->執行->輸入 powershell即可)
獲取 SMB1和SMB2 伺服器協議配置的當前狀態,輸入:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
輸出為:
可以看出當前伺服器SMB1未開啟,嘗試開啟SMB1,
在powershell控制檯輸入:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
報錯,指定服務不存在,所以當前的伺服器不支援SMB1,到此,原因找到了,因為本地使用的機器支援SMB1所以可以正常執行jcifs的功能,但是正式環境的伺服器不支援SMB1,所以報錯
解決問題
當前解決思路為替換jar包(如果有更好的方式,歡迎私信)
jcifs的網站上提供了兩種支援SMB2/SMB3的方式
第二步: 參照github官方的文件進行編寫程式碼,連結共享資料夾
實測成功
到此,問題解決,如按上述流程有任何問題,歡迎私信