检查可加载的JNI库

时间:2011-02-17 12:06:50

标签: java java-native-interface classloader

我有一个问题。有没有办法可以检查是否可以在没有实际加载的情况下加载dll?我的问题如下:

我正在使用需要加载本机库的第三方API。但奇怪的是,尽管它是一个“库”,如果它无法加载本机库,它将调用System.exit()。虽然我的应用程序依赖于该库,但我不希望我的应用程序崩溃,即使我不能使用只是我的应用程序中的一个功能的库[虽然是一个重要的]。所以在我使用库之前,我想检查dll是否可加载。我尝试通过检查是否从语句System.loadLibrary("LibraryName")抛出UnsatisfiedLinkError来执行此操作。如果抛出错误,那么我不使用该库。但是,如果它没有抛出任何错误我使用库。现在这样做后我得到以下错误:

  

无法使用原生库。图书馆是   已经加载了不同的   类加载器。

Hance我无法从System.loadLibrary()方法加载库,只能从第三方库中执行。 所以,我的问题是“如何在不实际加载库的情况下检查库是否可加载?”

1 个答案:

答案 0 :(得分:0)

如果无法加载库,则不应调用system.exit()。当我试图加载一个无法加载的库时,我收到一个错误。您的库未正确加载是否可能导致进程被终止。检查这个问题的唯一方法是让一个单独的进程尝试加载库并查看会发生什么。