尝试从jcifs迁移到jcifs-ng(最新的jar jcifs-ng-2.1.2.jar)以将文件复制到远程文件或从远程文件复制文件。 我的代码使用旧的jcifs:
System.setProperty("jcifs.smb.client.responseTimeout", "10000");
System.setProperty("jcifs.smb.client.soTimeout", "2000");
if (winsIPList.trim().equals("")) {
System.setProperty("jcifs.smb.client.dfs.disabled", "true");
} else {
System.setProperty("jcifs.smb.client.dfs.disabled", "false");
System.setProperty("jcifs.netbios.wins", winsIPList.trim());
System.setProperty("resolveOrder", "DNS");
}
NtlmPasswordAuthentication auth = new
NtlmPasswordAuthentication(filesrvDomainIP, filesrvDomainUser,
filesrvDomainPassword);
smbRemoteFile = new SmbFile("smb:" + remoteFile.replace("\\", "/"), auth);
<here the code to copy file>
在stackoverflow中找不到几个示例,但是看起来它们很旧。
其中一部分包括使用NtlmPasswordAuthentication(上下文,DomainIP,DomainUser,DomainPassword),该方法在最后一个jcifs-ng软件包中已弃用。
其他人使用
SmbFile smbRemoteFile = new SmbFile(remoteFile, someContext)
报告编译器未定义
有人可以提供一个可行的例子吗?
答案 0 :(得分:0)
根据此问题:jcifs-ng Issue #36: Chicken/egg relationship between CIFSContext and credentials
类NtlmPasswordAuthentication
被NtlmPasswordAuthenticator
取代。
因此,您可以将NtlmPasswordAuthentication
的用法替换为:
NtlmPasswordAuthenticator auth = new NtlmPasswordAuthenticator(domain, username, password)
此外,this answer可能会有所帮助。
答案 1 :(得分:0)
工作示例:
BaseContext baseCxt = null;
Properties jcifsProperties = new Properties();
jcifsProperties.setProperty("jcifs.smb.client.enableSMB2", "true");
jcifsProperties.setProperty("jcifs.smb.client.dfs.disabled","true");
Configuration config = new PropertyConfiguration(jcifsProperties);
baseCxt = new BaseContext(config);
auth = baseCxt.withCredentials(new NtlmPasswordAuthenticator(DomainIP, DomainUser,
DomainPassword));
SmbFile smbRemoteFile = new SmbFile("smb:" + remoteFile.replace("\\", "/"), auth);