我从本机代码启动JVM,然后启动Jetty。一个webapp然后加载一个名为JPeripheral的库。本地启动器和JPeripheral都依赖一个名为Jace的本地库。当Web应用程序试图加载Java的的Jace抛出:强制Jetty加载父类ClassLoader中的类
java.lang.UnsatisfiedLinkError: Native Library jace.dll already loaded in another classloader
这里是Web应用程序内的类加载器的层次结构:
WebAppClassLoader - > sun.misc.Launcher $ AppClassLoader - > sun.misc.Launcher $的ExtClassLoader
Jace.dll和Jetty都由sun.misc.Launcher$AppClassLoader
加载(由本地启动器使用)。 JPeripheral由WebAppClassLoader加载。
解决此问题的一种方法是从sun.misc.Launcher$AppClassLoader
加载JPeripheral(所以jace.dll从同一个Classloader中加载两次)。我怎么做?