【发布时间】:2015-08-04 08:58:00
【问题描述】:
我正在尝试将一些文件从我的本地计算机复制到与我的计算机使用 Java 连接在同一网络中的 samba 服务器。
如果我尝试通过浏览器登录或在 Ubuntu 网络设备文件夹中打开它没有问题,但是通过 Java 我似乎无法成功登录。
这是我的代码:
public static void function() throws MalformedURLException, SmbException {
String urlToBackUpFile = "smb://dlink-5e6490//Volume_1/newfolder/file.zip";
NtlmPasswordAuthentication auth = new **NtlmPasswordAuthentication("192.168.1.8", "admin", null);**
SmbFile dir = new SmbFile(urlToBackUpFile, auth);
SmbFile dest = new SmbFile("file:///home/username/file.zip");
dir.copyTo(dest);
}
我总是遇到两个错误之一。
如果我只在用户名和密码字段中插入域和 null,我会收到以下错误:
线程“主”jcifs.smb.SmbException 中的异常:网络名称 找不到。在 jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) 在 jcifs.smb.SmbTransport.send(SmbTransport.java:663) 在 jcifs.smb.SmbSession.send(SmbSession.java:238) 在 jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) 在 jcifs.smb.SmbFile.doConnect(SmbFile.java:911) 在 jcifs.smb.SmbFile.connect(SmbFile.java:957) 在 jcifs.smb.SmbFile.connect0(SmbFile.java:880) 在 jcifs.smb.SmbFile.copyTo(SmbFile.java:2304) 在 javaapplication2.JavaApplication2.function(JavaApplication2.java:40) 在 javaapplication2.JavaApplication2.main(JavaApplication2.java:48) Java 结果:1
但是,如果我尝试将值 "admin" 插入用户名并将 null 或 "" 插入密码(有管理员帐户没有密码)它给了我这个错误:
线程“主”jcifs.smb.SmbAuthException 中的异常:登录失败: 未知的用户名或错误的密码。 在 jcifs.smb.SmbSession.sessionSetup(SmbSession.java:406) 在 jcifs.smb.SmbSession.send(SmbSession.java:218) 在 jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) 在 jcifs.smb.SmbFile.doConnect(SmbFile.java:911) 在 jcifs.smb.SmbFile.connect(SmbFile.java:957) 在 jcifs.smb.SmbFile.connect0(SmbFile.java:880) 在 jcifs.smb.SmbFile.copyTo(SmbFile.java:2303) 在 javaapplication2.JavaApplication2.function(JavaApplication2.java:40) 在 javaapplication2.JavaApplication2.main(JavaApplication2.java:48) Java 结果:1
我尝试了 NtlmPasswordAuthentication 这一行的各种组合,比如...
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("192.168.1.8", null, null);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("192.168.1.8", "admin", null);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("192.168.1.8", "admin", "");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("smb://dlink-5e6490/", null, null);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("smb://dlink-5e6490/", "admin", null);
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("smb://dlink-5e6490/", "admin", "");
...但似乎没有任何效果。
有谁知道问题出在哪里?
【问题讨论】:
-
你试过设置域吗?
-
我按照this 教程创建了一个共享文件夹,但我仍然无法登录。我不知道这是否“设置域”。如果没有,你能告诉我怎么做吗?