java.lang.UnsatisfiedLinkError: {. ____ dll} native Bibliothek bereits in einem anderen Klassenlader geladen
-
11-07-2019 - |
Frage
Ich verwende eine JAR-Datei von meinem eigenen, die eine Java-Bibliothek (JHDF5) verwendet, das wiederum eine DLL durch JNI verwendet. Wenn ich meine eigene JAR-Datei in MATLAB verwenden, und dann wieder aufbauen muß, um es beim Debuggen, ich diese Fehlermeldung erhalten, wenn ich versuche erneut, es zu benutzen, nachdem clear java
Aufruf und ein neues Objekt aus der Liste meiner JAR-Datei zu erstellen:
java.lang.UnsatisfiedLinkError:
Native Library C:\deka\proj\java\ESPDF\dist\lib\jhdf5.dll
already loaded in another classloader
und ich kann es nicht lösen, ohne MATLAB Abschalten und Wiedereröffnung, was ein Schmerz im Nacken ist.
Was ist dieser Fehler und wessen Schuld ist das? (Mein? MATLAB? JHDF5 für die DLL nicht zu befreien oder zu überprüfen, ob es bereits geladen ist)
Lösung
In der Regel gibt es keine Möglichkeit für Java-Code eine native DLL zu entladen. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id= 5075039
Da, sobald eine DLL geladen wird, es ist dort für die gesamte Lebensdauer der JVM und den VM wird sichergestellt, dass es einmal geladen und nur einmal.
, um die Schuldfrage zu beantworten, nehme ich es die Schuld des Codes ist, dass die DLL zu laden versucht, ohne Wenn es bereits zu überprüfen.