2012-04-10 8 views
3
werden kann

Der nicht gefunden folgende ist mein Stück Codejcifs.smb.SmbException: Der Netzwerkname

SmbFile catalExp = new SmbFile("smb://<Shared machine name>/Project share/Home/4. Folders/planning - Design & Exec/sample.txt", 
        new NtlmPasswordAuthentication(LoadProp.getShrdDomain(),"user","paswd")); 

In diesem ich die Störung erhalte

jcifs.smb.SmbException: The network name cannot be found 
    at jcifs.smb.SmbTransport.send(SmbTransport.java:753) 
    at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:140) 
    at jcifs.smb.SmbSession.send(SmbSession.java:103) 
    at jcifs.smb.SmbTree.treeConnect(SmbTree.java:132) 
    at jcifs.smb.SmbFile.connect(SmbFile.java:674) 
    at jcifs.smb.SmbFile.connect0(SmbFile.java:644) 
    at jcifs.smb.SmbFile.open0(SmbFile.java:700) 
    at jcifs.smb.SmbFile.createNewFile(SmbFile.java:2027) 

Ist das alles, was mit dem zu tun, Benutzerrechte zu diesem bestimmten freigegebenen Ordner oder mache ich etwas falsches Bitte um Rat

Antwort

0

Nun, ich bekomme diesen Fehler auch, aber nur auf einem Gerät, mein Code, der auf Android 4 funktioniert. 04 ist

String strprog = "STRING CREATED| "; //debug log string 
    try { 
     strprog += "NTLM| "; 
     NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("username:password"); 
     strprog += "SMB| "; 
     SmbFile file = new SmbFile("smb://<pcname>/foldername/filename.txt",auth); 

     strprog += "EXIST| "; 
     String there = String.valueOf(file.exists()); 

     strprog += "View| "; 
     TextView pp; 
     pp = (TextView) findViewById(R.id.tv); 
     pp.setText(there); 



    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     strprog += "ERROR! "; 
     TextView ll; 
     ll = (TextView) findViewById(R.id.tv); 


     ll.setText(strprog + e.getStackTrace().toString() + " " + e.getMessage() + " " + e.getLocalizedMessage()); 
    } 

Der einzige Unterschied, den ich sehe, ist, wo Sie Ihre NtlmPasswordAuth zu Mine verglichen. Aber wie ich aus irgendeinem Grund sagte dies wirft Null-Eingabe param auf Andriod 2.0, wenn ich tiefer tauchen dann smb: // Host, aber ich hoffe, das hilft Ihnen aus.

1

Ich lief diese Fehlermeldung, und es stellte sich heraus, das Problem war, dass mein Netzwerkpfad falsch war. Sie sollten sicherstellen, dass das Objekt NtlmPasswordAuthentication korrekt konfiguriert ist, dass Ihr Netzwerkpfad korrekt ist und Sie die Eigenschaft jcifs.netbios.wins richtig festgelegt haben, wie im ersten Beispiel on this page angegeben.

Zum Beispiel kann eine Remote-Eigenschaften Datei laden:

final NtlmPasswordAuthentication AUTH = new NtlmPasswordAuthentication("domainname", "username", "password"); 

Config.setProperty("jcifs.netbios.wins", "10.10.1.1"); 

Properties props = new Properties(); 
InputStream in = new SmbFileInputStream(new SmbFile("smb://10.10.1.1:445/rootfolder/path/filename.properties", AUTH)); 
props.load(in); 

Ein guter Weg, (Sie werden try/catch und Eingangsstrom Schließung hinzufügen müssen), um sicherzustellen, dass alle Ihre Parameter Es ist richtig, sich zu testen und die Datei mit einem smb/cifs-Client zu lokalisieren. Zum Beispiel smbclient auf Linux/Unix:

smbclient -Uusername -p 139 //10.10.1.1/rootfolder 

Die Domain im oberen Bereich angezeigt wird, wenn Sie mit smbclient einloggen:

Domain=[DOMAINNAME] 

..und Sie können die Dateien navigieren, um sicherzustellen, Sie haben habe den Weg richtig gemacht.

0

ich dieses Problem hatte, und es stellte sich heraus, dass ich nicht sehen, was der Name der Freigabe war, dass auf meinem Windows freigegebenen Laufwerk zugeordnet wurde ... So, Mac OS verwenden, ich lief:

smbutil view smb://[email protected]

Nachdem ich zur Eingabe meines Passworts aufgefordert wurde, wurde mir eine Liste der Freigabenamen angezeigt (die bei Verwendung von Windows nicht sichtbar waren). Sobald ich meinen Anteil Namen gefunden, war es so einfach wie mit, dass, wenn sie mit JCIFS Anschluss:

new SmbFile("smb://HOSTNAME/SHARENAME/path/I/was/trying/to/access", auth);

+0

#James Was von Freigabenamen bedeuten sie? Ist das etwa so, wenn Sie etwas als Shared konfigurieren, geben Sie einen Namen an, unter dem es geteilt werden soll. – Sundhar

+1

Das hat auch für mich funktioniert und mir so viele Kopfschmerzen erspart! Danke und +1! @Sundhar - Wenn Sie diesen Befehl ausführen, ist es für Sie offensichtlich: Sie erhalten einen Ausdruck aller Freigaben (Verzeichnisse), die auf dem Remote-Server über 'smb: //' verfügbar sind. – smeeb