2012-04-10 12 views
3

を見つけることができません以下は、私がエラーにjcifs.smb.SmbException:ネットワーク名が

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) 

を取得していますコードこの中

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

の私の作品でこれはとは何ですその特定の共有フォルダに対するユーザーの権利、または何か間違ったことをしています アドバイスをお願いします

答えて

0

このエラーも発生しますが、Android 4で動作するコードは1つのデバイスでのみ発生します。 04は私が見る唯一の違いは、あなたのNtlmPasswordAuthは私に比べて持っているところである

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()); 
    } 

です。 しかし何らかの理由で私が述べたように、これはAndriod 2.0のヌル入力paramをスローします。これはsmb://ホストに深く潜んでいますが、これがあなたを助けてくれることを願っています。

1

このエラーメッセージが表示され、ネットワークパスが正しくないことが判明しました。 NtlmPasswordAuthenticationオブジェクトが正しく設定されていること、ネットワークパスが正しいこと、および最初の例on this pageに示されているように、jcifs.netbios.winsプロパティが正しく設定されていることを確認する必要があります。

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); 

(あなたは/キャッチし、入力ストリーム閉鎖を試す追加する必要があります)

あなたのパラメータのすべてを確保するための良い方法:リモートプロパティファイルをロードするために例えば

、正しいのは、smb/cifsクライアントを使用してファイルへのログインとファイルの検索をテストすることです。たとえばLINUX/UNIX上でsmbclientの:

smbclient -Uusername -p 139 //10.10.1.1/rootfolder 

ドメインは、あなたがsmbclientを使ってログイン最上部に表示されます。

Domain=[DOMAINNAME] 

..andあなたは必ずまし作るためにあなたのファイルに移動することができます正しいパスを得ました。

0

のMac OSを使用して、私はこの問題を持っていた、そしてそれは私が共有名は、私のWindowsにマップされたドライブを共有したことだったものを見ていなかったことが判明し...だから、私は走った:

smbutil view smb://[email protected]

パスワードの入力を求められた後、共有名の一覧が表示されました(Windowsを使用してこの項目を見たときにはわかりません)。

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

+0

#Jamesは、共有名とはどういう意味ですか:私は私の共有名を見つけたら、それはJCIFSと接続する際に使用していることと同じくらい簡単でしたか?それは何かを共有するように構成するときのように、共有する必要がある名前を提供するようなものでしょうか? – Sundhar

+1

これも私のために働いて、頭痛の多くをsoooo私を救った!ありがとう、+1! @Sundhar - このコマンドを実行すると、明白になるでしょう: 'smb://'を使ってリモートサーバ上で利用可能なすべての共有(ディレクトリ)からのプリントを取得します。 – smeeb

関連する問題