gpt4 book ai didi

java - JCIFS SMB 正在本地 tomcat 服务器而不是远程服务器上创建文件夹

转载 作者:行者123 更新时间:2023-12-02 03:02:12 27 4
gpt4 key购买 nike

我正在使用 JCIFS 在 Windows 远程共享目录上创建目录。它不会使身份验证失败,并继续调用 mkdir() 方法。但是,文件夹是在 Linux 文件系统上 Tomcat 安装目录的根目录下创建的,而不是在 Windows 共享目录中创建的。没有遇到任何异常。

我正在使用 JCIFS SMB 版本 1.3.19。 Java 应用程序是一个 servlet,使用 Tomcat 在 Linux 机器上运行。当进行 SMB 调用时,如代码块所示,应用程序会创建请求的目录,但它是在 Tomcat 安装目录的根目录下创建的。我在调用 mkdir() 方法之前使用 NtlmPasswordAuthentication 。

public void create() {
try {
String smbUrl = String.format("smb://WIN-2016-AD-DNS/profiles/" + userName);
LOGGER.info("smbUrl = " + smbUrl);

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, "jdoe", "password");
SmbFile dir = new SmbFile(smbUrl, auth);
if (dir.isDirectory()) {
LOGGER.info("Directory already exists");
} else {
try {
dir.mkdir();
LOGGER.info("Successfully created folder on share");
} catch (Exception e) {
logExceptionError("Failed to create Directory with SMB mkdir", e, 0);
}
}
} catch (Exception e) {
logExceptionError("Failed to create Directory with SMB", e, 0);
}
}

...

最佳答案

我终于找到问题所在了。我在 Windows 平台而不是 Linux 上设置了整个 Tomcat 服务器环境,看看是否会有更好的运气。事实证明,我在 Tomcat 日志之一中找到了一个条目...

SEVERE [ajp-nio-8009-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [ADuser] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: jcifs.smb.NtlmPasswordAuthentication

为什么我的应用程序中没有捕获此异常,我不知道。所以我将 jcifs 库复制到 Tomcats 的“lib”文件夹中,重新启动 Tomcat,它就工作了。我回到 Linux 环境并做了同样的事情,它也在那里工作。

关于java - JCIFS SMB 正在本地 tomcat 服务器而不是远程服务器上创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57045228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com