Android JCIFS SmbFile.listFiles崩溃

Android JCIFS SmbFile.listFiles崩溃,android,jcifs,Android,Jcifs,首先,我想说我确实有上网的权限 我试着这么做 jcifs.Config.registerSmbURLHandler(); SmbFile file = new SmbFile("smb://"); SmbFile[] files = file.listFiles(); 当file.listFiles()尝试运行新SmbFile(…)时,新SmbFile(…)执行正常,并出现以下错误 03-25 02:47:17.749: E/AndroidRuntime(4552): FATAL EXCEPT

首先,我想说我确实有上网的权限

我试着这么做

jcifs.Config.registerSmbURLHandler();
SmbFile file = new SmbFile("smb://");
SmbFile[] files = file.listFiles();
当file.listFiles()尝试运行新SmbFile(…)时,新SmbFile(…)执行正常,并出现以下错误

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)
那么它是不是没有连接?我不知道为什么会发生这种情况,我已经在网上查过了。以前找不到有这个问题的人

根据评论的要求,这里是崩溃后错误的完整列表

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
03-26 21:15:00.140:E/AndroidRuntime(9691):致命异常:main
03-26 21:15:00.140:E/AndroidRuntime(9691):java.lang.ExceptionInInitializeError
03-26 21:15:00.140:E/AndroidRuntime(9691):在jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:850)
03-26 21:15:00.140:E/AndroidRuntime(9691):在jcifs.smb.SmbFile.connect(SmbFile.java:951)
03-26 21:15:00.140:E/AndroidRuntime(9691):在jcifs.smb.SmbFile.connect0(SmbFile.java:880)
03-26 21:15:00.140:E/AndroidRuntime(9691):在jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1914)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于jcifs.smb.SmbFile.doEnum(SmbFile.java:1734)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于jcifs.smb.SmbFile.listFiles(SmbFile.java:1715)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于jcifs.smb.SmbFile.listFiles(SmbFile.java:1648)
03-26 21:15:00.140:E/AndroidRuntime(9691):在tantonj.ComicXtreamHD.NRootPick.fill(NRootPick.java:37)
03-26 21:15:00.140:E/AndroidRuntime(9691):在tantonj.ComicStreamHD.NRootPick.onCreate(NRootPick.java:26)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.Activity.performCreate(Activity.java:4465)上
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.ActivityThread.access$600(ActivityThread.java:123)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.os.Handler.dispatchMessage(Handler.java:99)上
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.os.Looper.loop(Looper.java:137)
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.app.ActivityThread.main(ActivityThread.java:4424)上
03-26 21:15:00.140:E/AndroidRuntime(9691):位于java.lang.reflect.Method.Invokenactive(本机方法)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于java.lang.reflect.Method.invoke(Method.java:511)
03-26 21:15:00.140:E/AndroidRuntime(9691):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-26 21:15:00.140:E/AndroidRuntime(9691):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-26 21:15:00.140:E/AndroidRuntime(9691):在dalvik.system.NativeStart.main(本机方法)
03-26 21:15:00.140:E/AndroidRuntime(9691):由以下原因引起:android.os.NetworkOnMainThreadException
03-26 21:15:00.140:E/AndroidRuntime(9691):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于java.net.InetAddress.lookupHostByName(InetAddress.java:391)
03-26 21:15:00.140:E/AndroidRuntime(9691):位于java.net.InetAddress.getLocalHost(InetAddress.java:371)
03-26 21:15:00.140:E/AndroidRuntime(9691):在jcifs.netbios.NbtAddress.(NbtAddress.java:187)
03-26 21:15:00.140:E/AndroidRuntime(9691):。。。23多
路径应如下所示:smb://ipadress/pathtosharefolder/

用户名、密码--访问网络的用户名和密码

“原因:android.os.NetworkOnMainThreadException”

您正试图在主线程上访问网络。有几种方法可以避免此错误,最推荐的方法是使用AsyncTask

以下是有关AsyncTask的文档


我认为您缺少一些依赖项。由于项目是开源的,您能看到SmbFile中第850行发生了什么吗?也许这会有帮助。SmbFile的第850行是如果(address!=null&&address.length()>0){我怎么会缺少依赖项?我为jcifs添加了jar文件…显然,这就是你需要记录的全部内容。你可以在pastebin或其他地方发布完整的跟踪信息吗?我认为是另一个异常导致了这个错误。如果有人有相同的问题,这里是anwser:如果有人有相同的问题,这里是anwser:那么目前我的ASUtransformers USB连接线已停止用于数据传输。因此,在我的新连接线投入使用之前,我无法使用auth进行测试…但是,我在半周前使用windows应用尝试了此功能,它可以使用身份验证,但无法列出来自smb://的文件,因此,一旦我的新连接线投入使用,我可能就可以开始使用它
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",
            username, password);

sFile = new SmbFile(path, auth);

files = sFile.listFiles();