java.lang.UnsatisfiedLinkError: Собственная библиотека {____. dll} уже загружена в другой загрузчик классов - PullRequest
3 голосов
/ 03 августа 2009

Я использую собственный JAR-файл, который использует библиотеку Java (JHDF5), которая, в свою очередь, использует dll через JNI. Когда я использую свой собственный JAR-файл в MATLAB, а затем приходится перестраивать его во время отладки, я получаю эту ошибку, когда пытаюсь использовать его снова, после вызова clear java и создания нового объекта из моего JAR-файла:

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

и я не могу решить эту проблему, не закрыв MATLAB и не открывая снова, что является болью в шее.

Что это за ошибка и чья это вина? (мой? MATLAB's? JHDF5 за то, что он не освобождает DLL или не проверяет, загружен ли он уже)

1 Ответ

5 голосов
/ 03 августа 2009

В общем случае Java-код не может выгружать нативную DLL.http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039

Учитывая, что после загрузки dll она существует в течение всего срока службы JVM, а виртуальная машина обеспечит ее загрузку один раз и только один раз.

Чтобы ответить на вопросЯ полагаю, это ошибка кода, который пытается загрузить DLL, не проверяя, доступен ли он уже.

...