我正在使用我自己的JAR文件,该文件使用Java库(JHDF5),后者又通过JNI使用dll。当我在MATLAB中使用我自己的JAR文件,然后在调试时必须重建它时,在我尝试再次使用它时,在调用clear java
并从我的JAR文件创建新对象后出现此错误:
java.lang.UnsatisfiedLinkError:
Native Library C:\deka\proj\java\ESPDF\dist\lib\jhdf5.dll
already loaded in another classloader
如果不关闭MATLAB并重新打开,我无法解决这个问题,这是一个痛苦的问题。
这是什么错误,是谁的错? (我的?MATLAB的?JHDF5没有释放DLL或检查它是否已经加载)
答案 0 :(得分:5)
通常,Java代码无法卸载本机dll。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039
考虑到这一点,一旦加载了一个dll,就会存在JVM的生命周期,而VM将确保它只加载一次。
为了回答责备问题,我想这是代码的错误,试图加载dll而不检查它是否已经可用。