Во-первых, вот что работает , а затем я опишу, что не так: Используя SWIG, мы взяли какой-то сторонний код и создали исходный код оболочки Java и C.Был создан JAR-файл классов Java и общая библиотека кода оболочки C.У нас есть кодовая база Java, которая загружает разделяемую библиотеку и способна вызывать собственный код по мере необходимости.Это работает на Sun HostSpot JVM 1.5.0.14.Не беспокойтесь.
Теперь, это не работает : при использовании той же JVM, файла jar с кодом оболочки Java и той же общей библиотеки, описанной выше, я пытаюсь использовать Jythonсделать некоторые сценарии.Переменные среды CLASSPATH и LD_LIBRARY_PATH установлены правильно.Из Jython я могу запустить java.lang.System.loadLibrary (...) и загрузить общую библиотеку без ошибок.Однако, когда первый собственный метод из этой библиотеки, который вызывается для объекта Java в моем скрипте Jython, я получаю UnsatisfiedLinkError от JVM.
Я запустил nm в общей библиотеке,и я вижу, что рассматриваемый метод присутствует в библиотеке (с именем искажения для собственных методов, как описано в спецификации JNI).Итак, вопрос в том, что может помешать JVM разрешить имя метода?
Я прошел через спецификацию JNI и вижу, что библиотека может быть выгружена GC.Может ли это случиться до того, как я вызову метод?Что еще может привести к сбою?