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)

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top