понедельник, 18 января 2010 г.

JNI

В убунте некоторые репозиторные JNI-фасады укладываются в /usr/lib/jni

Проблема в том, что виртуальная машина от SUN (про другие не знаю) этот каталог не принимает в расчет при поиске бинарных библиотек. Механизм ldd также не помогает и добавление этой папки в кэш поиска при помощи ldconfig к успеху не приводит. Возможно из соображений безопасности, а возможно SUN JDK просто ничего не знает ни про ldd, ни про /usr/lib/jni.

Приходится при запуске java либо указавать параметр виртуальной машины -Djava.library.path=/usr/lib/jni, либо выставлять переменную окружения LD_LIBRARY_PATH=/usr/lib/jni:$LD_LIBRARY_PATH

И то и другое не очень удобно на девелоперской машине, поскольку приложение может вызываться кучей способов (ide, ant, standalone) и в каждом случае приходится указывать эти параметры.

Выходом может быть размещение символьных ссылок на необходимые библиотеки в тех каталогах, в которых JVM все-таки производит поиск. Наиболее подходящим кандидатом для этого случит каталог бинарных библиотек самой JVM - /usr/lib/jvm/java-6-sun/jre/lib/amd64 (для x86-64)

Комментариев нет:

Отправить комментарий