Здравствуйте, 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.