Java 未满足链接错误:本机库C:\Domino\nlsxbe.dll已加载到另一个类加载器中

Java 未满足链接错误:本机库C:\Domino\nlsxbe.dll已加载到另一个类加载器中,java,dll,classpath,classloader,lotus-notes,Java,Dll,Classpath,Classloader,Lotus Notes,我有一个计时器进程,它读取LotusNotes5并将读取的文档转储到modeshape存储库中。该进程将时间戳和其他相关信息写入DB表,并使用该表提取停止的位置,然后读取其余文档 当应用程序取消部署并再次重新部署时,问题就会出现。当我这样做时,当使用Lotus notes创建会话时,它会抛出一个异常: ava.lang.UnsatisfiedLink错误:本机库C:\Domino\nlsxbe.dll已加载到另一个类加载器中 这很明显,因为重新部署并没有从JVM中删除依赖的DLL和JAR。 我需

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

当应用程序取消部署并再次重新部署时,问题就会出现。当我这样做时,当使用Lotus notes创建会话时,它会抛出一个异常:

ava.lang.UnsatisfiedLink错误:本机库C:\Domino\nlsxbe.dll已加载到另一个类加载器中

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

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


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

我解决了它。我检查了NotesThread类,发现它总是试图在类加载器中加载nlsxbe.dll,这导致了问题。我放弃了使用NotesThreads(以及将来的任何IBMAPI)的想法,使用java线程解决了这个问题

问题不在于笔记。对于两次加载同一个库(至少从我知道的R6版本)应该没有限制。使用NotesThreads的原因是,Notes/Domino可以在线程关闭时终止线程。如果只扩展线程,Notes/Domino将无法正确终止JVM(也无法清理后端对象)。。。撇开Notes版本不谈,听起来您的安装设置是无效的,所以除非您必须将Notes/Domino作为应用程序运行,否则不会对您造成影响。感谢Simon的提醒。部署与lotusnotes交互的应用程序的服务器没有lotusnotes部署,也永远不会有这样的安装。所以我想我在这方面是安全的。我现在遇到的新问题是lotusnotes会话在一段时间后超时,这限制了lotusnotes回收对象。为此,我在每1000条记录之后重新实例化会话和数据库对象。这可能会奏效。如果没有,那么你可能很快就会遇到一个新问题:)