2012-02-29 62 views
2

我在运行在Jboss Web服务器中的Web应用程序中使用java bonjour库(dns_sd.jar)。Java错误本机库已在另一个类加载器中加载

当我启动服务器时,Servlet通过bonjour找到网络上的所有资源并返回给用户。第一次一切都运行很好,但是当我重新部署Web应用程序,我得到:

java.lang.UnsatisfiedLinkError中:本地库C:已装入另一个类加载器\ Windows \ System32下\ jdns_sd.dll

我已经尝试过删除.dll并发生相同的事情。

为什么它甚至会引用.dll,如果我在我的web应用程序中有.jar库?

有没有人有任何想法如何解决这个问题?

回答

0

在重新部署之前,请先取消部署。 你不需要删除dll文件,它与你的错误没有任何关系。它是java和jboss的错误。问题是当你重新部署它时,它无法卸载你已经加载的库初始部署的时间。因此,下次加载该库之前,如果它已经加载,请不要加载该库,以便更好地检查该库是否已加载。

+0

非常感谢您的帮助......但我确实尝试了解除部署并再次部署,但仅重新启动服务器才能正常工作......考虑到部署我需要的其他应用程序所需的时间,这非常痛苦。 如果它已经在java函数中运行,是否有反向卸载库的问题?因为我不知道如何告诉bonjour不要再加载它。 – 2012-02-29 11:31:41

+1

虽然我没有得到一个完整的答案...至少我得到了确认...不是一个解决方案,虽然 – 2012-03-05 23:51:26

+0

你有没有找到任何解决方案呢? – v4r 2013-05-21 21:21:46

0

如果您使用的是JBoss 7,请尝试将使用dll的jar文件移动到JBoss模块中。重新启动JBoss,以便它拿起模块。修改您的MANIFEST.MF文件,使其包含“依赖项:theNameYouGaveIt”。

其中“theNameYouGaveIt”是您在模块的“yourModule/main/module.xml”文件中选择的名称。

这样,JBoss不会一遍又一遍地重新加载库。然后反复取消部署/重新部署您的.ear或.war。

相关问题