java jcifs_使用Java和Samba JCIFS访问文件

在Android应用中使用JCIFS库访问Windows共享文件时遇到`MalformedURLException`异常。问题出现在`new SmbFile(path, auth)`这行代码。解决方案是在尝试创建`SmbFile`对象时包裹在try-catch块中,并确保在`AndroidManifest.xml`中添加必要的权限。" 136948639,7232038,Java专家解读:Kafka深度解析与并发面试要点,"['kafka', 'java', '分布式', '并发处理', '消息队列']
摘要由CSDN通过智能技术生成

我正在编写一个Android应用程序,以使用JCIFS samba库访问Windows共享,但是我在新的SmbFile(path,auth)上收到java.net.MalformedURLException.我正在使用带有以下代码的空白活动(接受所有默认设置)的新android项目.我将“ jcifs-1.3.18.jar”复制并粘贴到应用程序的“ libs”文件夹中,并使用“添加到库”选项.

软件:

> Android Studio 2.1.3

> Windows 10专业版64位

> Java版本“ 1.8.0_101”

> Java(TM)SE运行时环境(内部版本1.8.0_101-b13)

> Java HotSpot(TM)64位服务器VM(内部版本25.101-b13,混合模式)

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import jcifs.smb.NtlmPasswordAuthentication;

import jcifs.smb.SmbFile;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

jcifs.Config.registerSmbURLHandler();

String user = "your_user_name";

String pass ="your_pass_word";

String sharedFolder="shared";

String path="smb://ip_address/"+sharedFolder+"/test.txt";

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);

SmbFile smbFile = new SmbFile(path,auth);

}

我不确定下面的链接是否有帮助,但是我无法理解它的建议,我应该尝试并解决该问题.

堆栈跟踪:

Executing tasks: [clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :app:compileDebugUnitTestSources]

Configuration on demand is an incubating feature.

Observed package id 'add-ons;addon-google_apis-google-23' in inconsistent location 'C:\Users\Andrew\AppData\Local\Android\Sdk\add-ons\addon-google_apis-google-23-1' (Expected 'C:\Users\Andrew\AppData\Local\Android\Sdk\add-ons\addon-google_apis-google-23')

Already observed package id 'add-ons;addon-google_apis-google-23' in 'C:\Users\Andrew\AppData\Local\Android\Sdk\add-ons\addon-google_apis-google-23'. Skipping duplicate at 'C:\Users\Andrew\AppData\Local\Android\Sdk\add-ons\addon-google_apis-google-23-1'

Incremental java compilation is an incubating feature.

:clean

:app:clean

:app:preBuild UP-TO-DATE

:app:preDebugBuild UP-TO-DATE

:app:checkDebugManifest

:app:preReleaseBuild UP-TO-DATE

:app:prepareComAndroidSupportAnimatedVectorDrawable2420Library

:app:prepareComAndroidSupportAppcompatV72420Library

:app:prepareComAndroidSupportSupportCompat2420Library

:app:prepareComAndroidSupportSupportCoreUi2420Library

:app:prepareComAndroidSupportSupportCoreUtils2420Library

:app:prepareComAndroidSupportSupportFragment2420Library

:app:prepareComAndroidSupportSupportMediaCompat2420Library

:app:prepareComAndroidSupportSupportV42420Library

:app:prepareComAndroidSupportSupportVectorDrawable2420Library

:app:prepareDebugDependencies

:app:compileDebugAidl

:app:compileDebugRenderscript

:app:generateDebugBuildConfig

:app:mergeDebugShaders

:app:compileDebugShaders

:app:generateDebugAssets

:app:mergeDebugAssets

:app:generateDebugResValues UP-TO-DATE

:app:generateDebugResources

:app:mergeDebugResources

:app:processDebugManifest

:app:processDebugResources

:app:generateDebugSources

:app:preDebugAndroidTestBuild UP-TO-DATE

:app:prepareDebugAndroidTestDependencies

:app:compileDebugAndroidTestAidl

:app:processDebugAndroidTestManifest

:app:compileDebugAndroidTestRenderscript

:app:generateDebugAndroidTestBuildConfig

:app:mergeDebugAndroidTestShaders

:app:compileDebugAndroidTestShaders

:app:generateDebugAndroidTestAssets

:app:mergeDebugAndroidTestAssets

:app:generateDebugAndroidTestResValues UP-TO-DATE

:app:generateDebugAndroidTestResources

:app:mergeDebugAndroidTestResources

:app:processDebugAndroidTestResources

:app:generateDebugAndroidTestSources

:app:mockableAndroidJar

:app:preDebugUnitTestBuild UP-TO-DATE

:app:prepareDebugUnitTestDependencies

:app:incrementalDebugJavaCompilationSafeguard

:app:compileDebugJavaWithJavac

:app:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).

C:\Users\Andrew\AndroidStudioProjects\MyApplication\app\src\main\java\com\example\myapplication\MainActivity.java:23: error: unreported exception MalformedURLException; must be caught or declared to be thrown

SmbFile smbFile = new SmbFile(path,auth);

^

1 error

:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

What went wrong:

Execution failed for task ':app:compileDebugJavaWithJavac'.

Compilation failed; see the compiler error output for details.

Try:

Run with --info or --debug option to get more log output.

Exception is:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'.

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)

at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)

at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)

at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)

at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)

at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)

at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)

at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)

at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)

at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)

at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)

at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)

at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)

at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)

at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)

at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)

at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)

at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)

at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)

at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153)

at org.gradle.internal.Factories$1.create(Factories.java:22)

at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)

at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)

at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)

at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)

at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)

at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)

at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)

at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)

at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)

at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)

at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)

at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)

at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)

at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)

at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)

at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)

at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)

at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)

at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)

at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)

at org.gradle.util.Swapper.swap(Swapper.java:38)

at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)

at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)

at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)

at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)

at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)

at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)

at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)

Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.

at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:48)

at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:33)

at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:104)

at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:53)

at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)

at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:35)

at org.gradle.api.internal.tasks.compile.CleaningJavaCompilerSupport.execute(CleaningJavaCompilerSupport.java:25)

at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilationFinalizer.execute(IncrementalCompilationFinalizer.java:39)

at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilationFinalizer.execute(IncrementalCompilationFinalizer.java:24)

at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:163)

at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:127)

at com.android.build.gradle.tasks.factory.AndroidJavaCompile.compile(AndroidJavaCompile.java:49)

at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232)

at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)

at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)

... 70 more

BUILD FAILED

Total time: 7.933 secs

解决方法:

试试这个

try{

String user = "your_user_name";

String pass ="your_pass_word";

String sharedFolder="shared";

String url = "smb://ip_address/" + sharedFolder + "/test.txt";

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(

null, user, pass);

SmbFile sfile = new SmbFile(url, auth);

}catch(Exception e){

}

AndroidManisfest.xml权限

标签:smb,jcifs,java,android

来源: https://codeday.me/bug/20191118/2026430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值