2012-03-25 13 views
0

Zunächst möchte ich sagen, dass ich die Internet-Berechtigungen auf habe.JCIFS SmbFile.listFiles crashing

Ich versuche, diese

jcifs.Config.registerSmbURLHandler(); 
SmbFile file = new SmbFile("smb://"); 
SmbFile[] files = file.listFiles(); 

neue SmbFile (...) führt in Ordnung zu tun, wenn file.listFiles() versucht, laufen sie mit dem folgenden Fehler abstürzt ...

03-25 02:47:17.749: E/AndroidRuntime(4552): FATAL EXCEPTION: main 
03-25 02:47:17.749: E/AndroidRuntime(4552): java.lang.ExceptionInInitializerError 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:850) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.connect(SmbFile.java:951) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.connect0(SmbFile.java:880) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1914) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.doEnum(SmbFile.java:1734) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.listFiles(SmbFile.java:1715) 
03-25 02:47:17.749: E/AndroidRuntime(4552):  at jcifs.smb.SmbFile.listFiles(SmbFile.java:1648) 

Also verbindet es nicht? Ich bin nicht sicher, warum das passiert, ich habe das Internet erkundet. Kann nicht jeder, der dieses Problem mit diesem vor finden musste ...

wie hier Kommentar angefordert wird die gesamte Liste der Fehler nach dem Absturz

03-26 21:15:00.140: E/AndroidRuntime(9691): FATAL EXCEPTION: main 
03-26 21:15:00.140: E/AndroidRuntime(9691): java.lang.ExceptionInInitializerError 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:850) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.connect(SmbFile.java:951) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.connect0(SmbFile.java:880) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1914) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.doEnum(SmbFile.java:1734) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.listFiles(SmbFile.java:1715) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.smb.SmbFile.listFiles(SmbFile.java:1648) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at tantonj.ComicXtreamHD.NRootPick.fill(NRootPick.java:37) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at tantonj.ComicXtreamHD.NRootPick.onCreate(NRootPick.java:26) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.Activity.performCreate(Activity.java:4465) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.os.Looper.loop(Looper.java:137) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at dalvik.system.NativeStart.main(Native Method) 
03-26 21:15:00.140: E/AndroidRuntime(9691): Caused by: android.os.NetworkOnMainThreadException 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at java.net.InetAddress.getLocalHost(InetAddress.java:371) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  at jcifs.netbios.NbtAddress.<clinit>(NbtAddress.java:187) 
03-26 21:15:00.140: E/AndroidRuntime(9691):  ... 23 more 
+0

Ich denke, dass Sie einige Abhängigkeiten fehlen. Da das Projekt Open Source ist, können Sie sehen, was in Zeile 850 in SmbFile passiert? Vielleicht wird das helfen. – Gaurav

+0

Zeile 850 von SmbFile ist if (Adresse! = Null && address.length()> 0) {Wie könnte ich Abhängigkeiten fehlen? Ich habe die JAR-Datei für jcifs hinzugefügt ... anscheinend ist das alles, was Sie tun müssen – tantonj

+0

Können Sie die vollständige Spur auf Pastebin oder woanders veröffentlichen? Ich denke, eine andere Ausnahme verursacht diesen Fehler. – Gaurav

Antwort

2
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", 
      username, password); 

sFile = new SmbFile(path, auth); 

files = sFile.listFiles(); 

Pfad als smb gegeben werden sollte: // ipadress/pathtosharefolder/

Benutzername, Passwort - Benutzername und Passwort auf das Netzwerk zuzugreifen

+0

Also mein Asus Transformatoren USB-Kabel hat zur Zeit funktioniert für die Datenübertragung nicht mehr funktioniert. Also, bis mein neues Kabel hereinkommt, kann ich nicht mit Auth testen ... Ich habe es jedoch vor einer halben Woche mit einer Windows-App versucht, und es hat mit der Authentifizierung funktioniert, konnte aber keine Dateien von smb: // auflisten. also werde ich es wahrscheinlich schaffen, sobald mein neues Kabel reinkommt – tantonj

4

"verursacht durch: android.os.NetworkOnMainThreadException"

Sie versuchen, während des Hauptthreads auf ein Netzwerk zuzugreifen. Es gibt mehrere Möglichkeiten, diesen Fehler zu vermeiden, da die Verwendung von AsyncTask am meisten empfohlen wird.

Hier sind die Dokumente auf AsyncTask.

http://developer.android.com/reference/android/os/AsyncTask.html