java - UnsatisfiedLinkError : Native Library C:\Domino\nlsxbe. dll 已加载到另一个类加载器中

标签 java dll classpath classloader lotus-notes

我有一个计时器进程,它读取 Lotus Notes 5 并将读取的文档转储到 modeshape 存储库中。该进程将时间戳和其他相关信息写入数据库表,并使用它来获取停止的位置,然后读取其余文档。

当应用程序取消部署并再次重新部署时,问题就会出现。当我这样做时,当使用 Lotus Notes 创建 session 时,它会引发异常:

ava.lang.UnsatisfiedLinkError: native 库 C:\Domino\nlsxbe.dll 已在另一个类加载器中加载

这很明显,因为重新部署并没有从 JVM 中删除依赖的 dll 和 Jars。 我需要一个解决方案,在其中我可以从 JVM 中删除依赖项,或者在下次尝试创建 session 时引用相同的 dll 和资源。

注意 - 我没有 LOTUS Notes api 尝试加载依赖项的代码,我什至不知道创建连接所需的依赖 API 和 DLL,所以我移动了 Lotus 的整个安装文件夹将 domino 客户端注释到我的 java.library.path

请帮忙,这让我发疯。可能是一个非常简单的问题,但我需要一些专家建议如何以更好的方式完成此任务。

最佳答案

我修好了。我剖析了 NotesThread 类,发现它总是尝试在类加载器中加载 nlsxbe.dll,这导致了问题。我放弃了使用 NotesThreads(以及将来的任何 IBM API)的想法并使用了 java 线程,这解决了问题。

关于java - UnsatisfiedLinkError : Native Library C:\Domino\nlsxbe. dll 已加载到另一个类加载器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22022457/

相关文章:

java - 为什么第一个 if 语句失败?

Java Resultset 和 AbstractTableModel 更新 JTable

java - 由 : java. lang.NoSuchMethodError : org.quartz.JobDataMap.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object 引起

c - Microsoft Visual Studio 中的外部链接问题

windows - Gradle bootRun 给出 CreateProcess 错误=206,文件名或扩展名太长

jmeter - 将文件夹中的所有 jar 添加到 jmeter 类路径

java - 安卓异常 : 'java.lang.NoClassDefFoundError: javax.jmdns.JmDNS'

java - 证明以下代码不是线程安全的

c# - 从源代码构建 TagLib# DLL 并使其 COM 对 PHP 可见

c++ - DLL编程(C++ | MSVS) 虚拟和派生