我在Jboss Web服务器上运行的Web应用程序中使用java bonjour库(dns_sd.jar)。
当我启动服务器时,Servlet会通过bonjour找到网络上的每个资源并返回给用户。第一次一切运行良好,但当我重新部署Web应用程序时,我得到:
java.lang.UnsatisfiedLinkError:已在另一个类加载器中加载的本机库C:\ Windows \ System32 \ jdns_sd.dll
我已经尝试删除.dll并且发生了同样的事情。
如果我的网络应用程序中有.jar lib,为什么它甚至会引用.dll?
有没有人知道如何解决这个问题?
答案 0 :(得分:0)
在重新部署之前进行取消部署。 你不需要删除dll文件,它与你的错误完全无关。它是java和jboss的错误。问题是当你重新部署它时,它无法卸载你已经加载的库。初始部署的时间。最好在下次加载库之前检查库是否已加载,如果已加载库则不加载库。
答案 1 :(得分:0)
如果你正在使用JBoss 7,请尝试将使用dll的jar文件移动到JBoss模块中。重新启动JBoss以便它获取模块。修改您的MANIFEST.MF文件,使其包含“Dependencies:theNameYouGaveIt”。
其中“theNameYouGaveIt”是您在模块的“yourModule / main / module.xml”文件中选择的名称。
这样,JBoss不会一遍又一遍地重新加载库。然后一遍又一遍地取消部署/重新部署.ear或.war。