Re[4]: ОДНА native library в разных ClassLoader'ах
От: dshe  
Дата: 23.10.06 07:55
Оценка:
Здравствуйте, spbAngel, Вы писали:

A>Здравствуйте, ekaterma, Вы писали:


E>>Одно из решений — это переписать "разные classloader-ы" таким образом, чтобы они делегировали загрузку

E>>класса, в котором инициализируется native библиотека, одному специальному загрузчику (скажем NativeLoader).

E>>Подробно почитать про загрузчики можно здесь: http://blogs.sun.com/vmrobot/category/Class%2BLoading


A>не помогло — native библиотека требует классы, которые загруженны не в NativeLoader, а в каждом из "разных classloader-ов" (plug-in'ы). Запрос из native, на подгрузку классов приходит такой (только имя необходимого класса), что не понятно, какой "classloader делегировал загрузку" и соответственно из какого дергать необходимые классы.


A>Да и JNI, вроде кэширует загруженные классы. Если 2 раза вызвать FindClass(char*) с одинаковыми параметрами, то второй вызов не вылетит в java. А надо бы — допускается, что это уже другой plug-in может быть


FindClass загружает классы системным класслоадером. Чаще всего именно это и нужно. А для того, чтобы загрузить класс другим класслоадером (как, например, в твоем случае), необходимо вызвать java.lang.ClassLoader.loadClass (или даже java.lang.ClassLoader.loadClassInternal) при помощи CallXXXMethod.
--
Дмитро
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.