jcifs.smb

因为业务原因,现在内网系统使用共享文件夹方式进行文件的输入输出,Java开发,使用的Jar包为jcifs,在本地测试完全正常,部署到正式环境后出现:
jcifs.smb.:to : 0.0.0.0/IP的异常,解决方式如下:
分析原因
查询jcifs的网站()
上述部分明确提到了,jsifs仅支持SMB1,而不支持SMB2/SMB3,所以先从服务器支持协议入手
服务器为服务器,在服务器上打开控制台(在开始->运行->输入 即可)
获取 SMB1和SMB2 服务器协议配置的当前状态,输入:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
输出为:
可以看出当前服务器SMB1未开启,尝试开启SMB1,
在控制台输入:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
报错,指定服务不存在,所以当前的服务器不支持SMB1,到此,原因找到了,因为本地使用的机器支持SMB1所以可以正常运行jcifs的功能,但是正式环境的服务器不支持SMB1,所以报错
解决问题
当前解决思路为替换jar包(如果有更好的方式,欢迎私信)
jcifs的网站上提供了两种支持SMB2/SMB3的方式

jcifs.smb

文章插图
当前解决时选用的方式为smbj(地址:)
第一步: 下载jar包,可以去下载(只能下载smbj.jar包,在实际运行时还需要导入一些辅助jar包,具体参照上的.),也可以去我上传的资源:进行下载(内附所需的jar包和一个demo)
第二步: 参照官方的文档进行编写代码,链接共享文件夹
实测成功
到此,问题解决,如按上述流程有任何问题,欢迎私信
补充:
有朋友私信给我可以开启SMB1,现在进行补充功能,操作如下:
【jcifs.smb】如果不想换jar包的朋友可以试试该方式