java.lang.UnsatisfiedLinkError : Native Library {____. dll} 已经加载到另一个类加载器中

标签 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 或检查它是否已加载)

最佳答案

一般来说,Java代码是没有办法卸载原生dll的。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039

鉴于此,一旦加载了一个 dll,它就会在 JVM 的生命周期内一直存在,并且 VM 将确保它只加载一次。

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

关于java.lang.UnsatisfiedLinkError : Native Library {____. dll} 已经加载到另一个类加载器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223518/

相关文章:

java - Java 中的 IEqualityComparer 接口(interface)

java - ELResolver 转义表达式的所有字符串输出

java - 使用 JavaFX 将图像拖到窗口外

matlab - Matlab 函数 "fit"是否有等效的 GNU Octave?

matlab - 将 .mat 格式的数据集转换为 .csv Octave /matlab

dll - 是否有与 gcc --kill-at 等效的 Visual C++?

java - 如何集中 primefaces 菜单栏?

matlab - 使用 HMM Matlab 进行序列预测

c - DLL 未从 LabVIEW 写入 txt 文件?

c++ - Visual C++ 中的 DLL 引用