java.lang.UnsatisfiedLinkError:本地库{____。dll}已经加载到另一个类加载器中

时间:2009-08-03 17:19:56

标签: java matlab dll java-native-interface shared-libraries

我正在使用我自己的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或检查它是否已经加载)

1 个答案:

答案 0 :(得分:5)

通常,Java代码无法卸载本机dll。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039

考虑到这一点,一旦加载了一个dll,就会存在JVM的生命周期,而VM将确保它只加载一次。

为了回答责备问题,我想这是代码的错误,试图加载dll而不检查它是否已经可用。