本文主要是介绍jcifs.smb.SmbException: Failed to connect: 0.0.0.000/IP 解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为业务原因,现在内网系统使用共享文件夹方式进行文件的输入输出,Java开发,使用的Jar包为jcifs,在本地测试完全正常,部署到正式环境后出现:
jcifs.smb.SmbException: Failed to connect: 0.0.0.0<00>/IP的异常,解决方式如下:
分析原因
查询jcifs的网站(http://www.jcifs.org/)
上述部分明确提到了,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的方式
当前解决时选用的方式为smbj(github地址:https://github.com/hierynomus/smbj)
第一步: 下载jar包,可以去https://mvnrepository.com/search下载(只能下载smbj.jar包,在实际运行时还需要导入一些辅助jar包,具体参照github上的gradle.properties),也可以去我上传的资源:https://download.csdn.net/download/u013092293/10766117进行下载(内附所需的jar包和一个demo)
第二步: 参照github官方的文档进行编写代码,链接共享文件夹
实测成功
到此,问题解决,如按上述流程有任何问题,欢迎私信
补充:
有朋友私信给我可以开启SMB1,现在进行补充功能,操作如下:
如果不想换jar包的朋友可以试试该方式
这篇关于jcifs.smb.SmbException: Failed to connect: 0.0.0.000/IP 解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!