Прикольно, я тож подобной темой занимался, делаю щас класслоадер на С++ под QT, если интересно напиши в личку хотелось бы сделать более подробный материал. У меня есть код который позволяет использовать Saxon из под сей.
Вы правы, так тоже можно. Но ведь проперти usr_paths / sys_paths — статические в классе ClassLoader, и их сброс / изменение позволит изменить все класслоадеры внутри JVM (кроме bootstrap classloader).
Спасибо за статью. Некоторое время назад передо мной встала такая же проблема. К сожалению, ситуация была отягощена тем, что это нужно было делать в апплете. Вобщем, из-за ограничений тамошней песочницы решить проблему не удалось.
Да, именно через этот wrapper я и запускаю. Насчет Runtime.load() — он делает то, что нужно, но для одного вызова, для одной библиотеки, а изменение путей в ClassLoader — позволяет изменять поведение уже скомпиленного кода, который написан через System.loadLibrary(). В общем, конечно, Runtime.load более локальльное и управляемое решение, когда надо загрузить одну библиотеку из конкретного места.
JNI, загрузка нативных библиотек. Меняем java.library.path на лету