2009-08-03 5 views
3

자바 라이브러리 (JHDF5)를 사용하는 JAR 파일을 사용하고 있습니다. JAR 파일은 JNI를 통해 dll을 사용합니다. 내가 MATLAB에서 내 자신의 JAR 파일을 사용하고 내가 clear java를 호출하고 내 JAR 파일에서 새로운 객체를 생성 한 후, 다시 사용하려고하면 다음 디버깅, 나는이 오류가 발생하면서 다시 작성해야하는 경우 :java.lang.UnsatisfiedLinkError : 네이티브 라이브러리 {____. dll}이 이미 다른 클래스 로더에로드되었습니다.

java.lang.UnsatisfiedLinkError: 
Native Library C:\deka\proj\java\ESPDF\dist\lib\jhdf5.dll 
already loaded in another classloader 

그리고 저는 목에 통증이있는 ​​MATLAB을 종료하고 다시 열지 않고도 문제를 해결할 수 없습니다.

이 오류는 무엇이며 오류가 무엇입니까? (MATLAB의 DLL을 해제하지 않았거나 이미로드되어 있는지 확인하지 않은 JHDF5)

+0

제 경우에는 다시 시작한 후에도 해결되지 않습니다 –

답변

5

일반적으로 Java 코드가 원시 DLL을 언로드하는 방법은 없습니다. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039

는 DLL이로드되면, 그것은 한 번만로드되었는지 확인합니다 JVM과 VM의 수명 동안 거기에 있음을 감안할 때.

비난의 질문에 대답하기 위해 나는 그것이 이미 사용 가능한지 확인하지 않고 dll을로드하려고 시도하는 코드의 잘못이라고 생각합니다.

+1

: 비난 : 좋은 점은 Matlab보다 HDF5를 변경하기가 쉽기 때문입니다. –

+1

아마도 Matlab이이 파일을로드하지 않았을 것입니다. 그렇지 않으면 재 구축 후에 만 ​​처음 오류가 발생한다고 생각합니다. 문서화되지 않은 "feature dumpmem"Matlab 명령을 사용하여 Matlab이로드 한 DLL 목록을 가져올 수 있습니다. –

관련 문제