LoginSignup
0
1

More than 1 year has passed since last update.

SmbFileでハマった話(Java)

Last updated at Posted at 2021-12-08

SmbFileでファイル共有認証が通らない。(Java)

最近、WindowsのSMB(共有フォルダ)のファイル操作で使ったSmbFileでハマったので、需要なさそうだけど残します。

SMB(共有フォルダ)のファイル操作を行いたいときに使おうとしたjcifsのSmbFile。
使い方としてはJava標準のFileクラスと使い方はほぼ同じです。
とはいえFileクラスをラップしてたりするわけではなく、全く関係ないので注意です。

初案件で右も左もよくわかってない初心者向け。

パスにユーザ名、パスワードを含めるやり方

 String rootPath = "smb://ユーザー名:パスワード@サーバー名/共有フォルダ名/"
 SmbFile file = new SmbFile(rootPath);

これでいけると思いきや、ユーザ名またはパスワードが不正といわれる。

もしかして、Active Directoryのドメインが抜けているから認識されない?

 String rootPath = "smb://ドメイン名;ユーザー名:パスワード@サーバー名/共有フォルダ名/"
 SmbFile file = new SmbFile(rootPath);

ドメイン名追加したらうまくいきました。

ローカルからアクセスするんだから、ユーザ名もいらないんじゃね?とか思いましたが、ちゃんとドメイン名まで必要になる。
Active Directoryでアカウントが管理されている場合は注意しましょう。

その他

・Windowsだと「\」バックスラッシュでパスを区切りがちですが、「/」スラッシュなので注意。
・末尾には必ず「/」が必要。
・smb://はプロトコルです。https://みたいなイメージ。
 (ぼくは初めCドライブみたいなものかと思ってました。全然違います。)
・サーバー名はIPアドレスでもDNS名でも行けるらしいです。

参考

https://javadoc.io/static/org.codelibs/jcifs/2.1.3/jcifs/smb/SmbFile.html

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1