Я запускаю JVM из собственного кода, затем запускаю Jetty. Затем веб-приложение загружает библиотеку под названием JPeripheral. И нативная программа запуска, и JPeripheral зависят от нативной библиотеки под названием Jace. Когда веб-приложение пытается загрузить Jace Java, выдает:
java.lang.UnsatisfiedLinkError: Native Library jace.dll already loaded in another classloader
Вот иерархия ClassLoader внутри веб-приложения:
WebAppClassLoader -> sun.misc.Launcher $ AppClassLoader -> sun.misc.Launcher $ ExtClassLoader
Jace.dll и Jetty загружаются sun.misc.Launcher$AppClassLoader
(используется родным средством запуска).
JPeripheral загружается WebAppClassLoader.
Одним из способов решения этой проблемы является загрузка JPeripheral из sun.misc.Launcher$AppClassLoader
(поэтому jace.dll загружается дважды из одного и того же загрузчика классов). Как мне это сделать?