2013-04-24 37 views
2

请考虑以下情形:相同的本地库

我有两个Java类,使用不同的系统类加载器加载。我有一个实现了队列的本地库。这两个类将加载相同的库,并将元素添加到队列中。可能吗?如果是这样,本地库实现将在这两个类中共享。

回答

6

根据JNI Specification这是不可能的。

在JDK中,每个类加载器管理自己的一组本机库。 相同的JNI本地库不能加载到多个类加载器中。这样做会导致UnsatisfiedLinkError被抛出。例如,当用于将本机库加载到两个类加载器中时,System.loadLibrary将引发UnsatisfiedLinkError

+0

只会发生错误如果我尝试再次加载库。对? 我可以从不同的类加载器调用库中的方法吗? – Reji 2013-04-24 12:44:36

+0

我认为下面的段落稍有回答:*“此外,本地库可以在其相应的类加载器被垃圾收集时卸载”*。所以这意味着**如果你要在不同的类加载器中使用这个库,那么本地库可能会被卸载,这将是有问题的。 – maba 2013-04-24 13:05:17

相关问题