2009-07-16 56 views
11

在一个Java程序,我写我做一个JNI调用的DLL并在启动时加载库如下检查一个DLL库是否已经加载? (JAVA)

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

我再实施加载同一个库的另一个阶级和我得到一个错误说图书馆已经加载,有没有办法检查图书馆是否已经在运行?

感谢,
-Pete

回答

0

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

另一种方法是正好一个类负责加载库。您可以加载类的静态初始化器的库部分,然后加载类==加载库。

编辑:javadocs for Runtime.loadLibrary()(其中System.loadLibrary电话)甚至建议静态初始化方法:

如果在一个类实现中使用本机方法,一个 标准战略是把本地 代码库中的文件(称之为 LIBFILE),然后把一个静态初始化 :

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

类的声明中。当该类被加载并初始化时, 的本地方法 的必需本机代码 也将被加载。

的Javadoc还说:

如果这种方法被称为比同库名一次,第二次和后续调用将被忽略。

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

+2

我猜他得到UnsatisfiedLinkError因为两个不同的类加载器尝试加载相同的本地库 – jitter 2009-07-16 18:52:51

相关问题