请考虑以下场景:
我有两个 java 类,使用不同的系统类加载器加载。我有一个实现了队列的本机库。这两个类都将加载相同的库,并将元素添加到队列中。可能吗?如果是这样,本机库实现是否会在两个类之间共享。?
请考虑以下场景:
我有两个 java 类,使用不同的系统类加载器加载。我有一个实现了队列的本机库。这两个类都将加载相同的库,并将元素添加到队列中。可能吗?如果是这样,本机库实现是否会在两个类之间共享。?
根据JNI 规范,这是不可能的。
在 JDK 中,每个类加载器都管理自己的一组本地库。不能将同一个 JNI 本机库加载到多个类加载器中。这样做会导致
UnsatisfiedLinkError
被抛出。例如,在用于将本机库加载到两个类加载器时System.loadLibrary
抛出一个。UnsatisfiedLinkError