检查是否已加载dll库? (JAVA)

在我编写的Java程序中,我对dll进行jni调用,并在启动时加载库,如下所示

static { System.loadLibrary("LdapAuthenticator2"); } 

然后,我实现了另一个加载相同库的类,并且收到一个错误,说明该库已经加载了,有没有办法检查库是否已经在运行?

谢谢,
-Pete

检查我对这个问题的回答

如何获取已加载的JNI库列表?

该解决方案很有效,遗憾的是问题的海报似乎与非SUN兼容的JVM或限制性太强的SecurityManager存在问题。

链接到示例POC源代码。

List loaded JNI libraries java sourcecode

什么样的错误? 如果这是一个例外,你能抓住它吗?

另一种方法是使一个类完全负责加载库。 您可以加载类的静态初始化程序的库部分,然后加载类==加载库。

编辑: Runtime.loadLibrary()System.loadLibrary调用)的javadoc甚至建议静态初始化方法:

如果要在类的实现中使用本机方法,则标准策略是将本机代码放入库文件(称为LibFile),然后放置静态初始化程序:

  static { System.loadLibrary("LibFile"); } 

在类声明中。 当加载并初始化类时,也将加载本机方法的必要本机代码实现。

javadocs还说:

如果使用相同的库名称多次调用此方法,则忽略第二次和后续调用。

这让我对你得到的错误更加好奇。