2012-02-29 4 views
2

Jboss 웹 서버에서 실행중인 웹 응용 프로그램에서 java bonjour 라이브러리 (dns_sd.jar)를 사용하고 있습니다.Java 오류 네이티브 라이브러리가 이미 다른 클래스 로더로로드되었습니다.

서블릿을 시작하면 서블릿은 네트워크상의 모든 리소스를 봉주르 (bonjour)로 찾아 사용자에게 반환합니다. 처음으로 모든 것이 잘 실행하지만 웹 응용 프로그램을 다시 배포 할 때 내가 얻을 :

java.lang.UnsatisfiedLinkError가 : 네이티브 라이브러리 C : 이미 다른 클래스 로더에로드 \ WINDOWS \ SYSTEM32 \의 jdns_sd.dll

난 이미 시도 .dll과 samething이 삭제됩니다.

웹 응용 프로그램에서 .jar lib가있는 경우 왜 .dll을 참조합니까?

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

답변

0

재배포하기 전에 전개 취소를 수행하십시오. dll 파일을 삭제할 필요가 없습니다. 오류와 관련이 없습니다. java 및 jboss.the 문제는 재배포 할 때로드 한 라이브러리를 언로드 할 수 없다는 것입니다. 초기 배포 시간. 라이브러리가로드되었는지 여부를 다음 번에로드하기 전에 확인하는 것이 좋습니다. 이미로드 된 경우 라이브러리를로드하지 않습니다.

+0

많은 도움을 주셔서 감사합니다.하지만 배포를 다시 시도했지만 다시 시작해야만 서버가 다시 시작됩니다 ... 필요한 다른 응용 프로그램을 배포하는 데 소요되는 시간을 고려하면 상당히 고통 스럽습니다. 라이브러리가 이미 Java 함수 내에서 실행중인 경우 라이브러리를 언로드 할 수 있습니까? 왜냐하면 나는 bonjour에게 다시로드하지 말라고 말하고 있기 때문입니다. –

+1

비록 내가 완전한 대답을 얻지는 못했다 ... 적어도 나는 확인을 얻었다 ... 해결책이 아니다. –

+0

아직 어떤 해결책을 찾았습니까? – v4r

0

JBoss 7을 사용하는 경우 dll을 사용하는 jar 파일을 JBoss 모듈로 이동해보십시오. JBoss를 다시 시작하여 모듈을 선택하십시오. "종속성 : theNameYouGaveIt"포함되도록 MANIFEST.MF 파일을 수정하십시오.

여기서 "theNameYouGaveIt"은 모듈의 "yourModule/main/module.xml"파일에서 선택한 이름입니다.

그런 식으로, JBoss는 라이브러리를 계속해서 다시로드하지 않습니다. 그런 다음 .ear 또는 .war를 다시 배포/재배포하십시오.

관련 문제