2014-01-24 6 views
2

Я пытаюсь создать SmbFileInputStream, ведущий к каталогу, который существует в моей системе. Я использую следующий код. Каждый раз, когда я получаю сообщение об ошибке в третьей попытке, я обнаруживаю, что у меня есть стек. Я считаю, что ошибка заключается в форматировании URL-адреса SMB. Если бы кто-нибудь мог указать, где я, возможно, ошибся в конфигурации моего домена, сервера и информации о пользователе, или как избежать специальных символов ниже, я был бы чрезвычайно благодарен.SmbFileInputStream, вызывающий SmbException: Синтаксис URL-адреса SMB?

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import jcifs.smb.*; 
import jcifs.*; 

public class jcifsX { 

    public static void main (String[] args){ 
     System.err.println("*********************************************************** loadWorkbookOrFail was ran"); 
     // create a new file input stream with the input file specified by fileName 

     jcifs.Config.registerSmbURLHandler(); 


     NtlmPasswordAuthentication npa = null; 
     try{ 
      npa = new NtlmPasswordAuthentication("myDomain","myUser","myPass"); 
      System.err.println("*********************************************************** NtlmPasswordAuthentication created successfully"); 
     } catch (Exception e) { 
      System.err.println("*********************************************************** Failed to create NtlmPasswordAuthentication. Stack trace to follow"); 
      e.printStackTrace(); 
     } 


     SmbFile smbf = null; 
     try{ 
      smbf = new SmbFile("smb:" + "//myDomain;myUser:[email protected]/myShare/" + args, npa); 
      System.err.println("*********************************************************** SmbFile successfully created"); 
      } 
     catch (Exception e) { 
      System.err.println("*********************************************************** Stack trace to follow"); 
      e.printStackTrace(); 
     } 


     SmbFileInputStream sfin = null; 
     try{ 
      sfin = new SmbFileInputStream(smbf); 
      System.err.println("*********************************************************** SmbFileInputStream successfully initiated"); 
      throw new IllegalArgumentException("If you're seeing this, it looks like it worked"); 
      } 
     catch (Exception e){ 
      System.err.println("*********************************************************** SmbFileInputStream failed: Stack trace to follow. args = " + args); 
      e.printStackTrace(); 
     } 
    } 
} 

StackTrace я получаю от работы это выглядит как

jcifs.smb.SmbException: The system cannot find the file specified. 
    at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563) 
    at jcifs.smb.SmbTransport.send(SmbTransport.java:663) 
    at jcifs.smb.SmbSession.send(SmbSession.java:238) 
    at jcifs.smb.SmbTree.send(SmbTree.java:119) 
    at jcifs.smb.SmbFile.send(SmbFile.java:775) 
    at jcifs.smb.SmbFile.open0(SmbFile.java:989) 
    at jcifs.smb.SmbFile.open(SmbFile.java:1006) 
    at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73) 
    at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65) 
    at jcifsX.main(jcifsX.java:61) 

Спасибо заранее, кто готов тратить время, посвященный этой проблеме. Это очень ценно.

ответ

0

Вы использовали "smb:" + "//myDomain;myUser:[email protected]/myShare/" + args. Это приведет к созданию такой строки smb://myDomain;myUser:[email protected]/myShare/[Ljava.lang.String;@470ae2bf.

Так что используйте "smb:" + "//myDomain;myUser:[email protected]/myShare/" + args[0]. Вместо 0 используйте правильный индекс.

 Смежные вопросы

  • Нет связанных вопросов^_^