2012-02-29 69 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。

相關問題