Я сталкивался с этой проблемой раньше и только сегодня столкнулся с ней. Вы можете обойти это, добавив аргумент виртуальной машины «-Djava.library.path = / path / to / other / libs», но я помню, что Java использует это только для поиска начальной библиотеки, а затем использует системный PATH для поиска любых зависимостей.
Несколько решений, которые я пробовал раньше:
1) Используйте System.load (absolutePath) в зависимой библиотеке перед загрузкой вашей библиотеки. Однако это не делает вашу программу сверхпортативной, если вы не всегда знаете, где будет эта библиотека.
2) В случае, когда lib1 зависит от lib2, я фактически использовал SetCurrentDirectory (Windows, не уверен в эквиваленте Mac) в нативном коде, прежде чем он связывался с какой-либо из зависимых библиотек, и это, похоже, работало. Опять же, необходимо знать, где находятся другие библиотеки.
3) В Windows может вывести зависимые библиотеки в c: \ windows \ system32 и найти их.
Несколько полезных постов на аналогичную тему (специфично для Windows, но я думаю, что проблема та же):
http://www.realityinteractive.com/rgrzywinski/archives/000219.html
http://www.velocityreviews.com/forums/t387618-jni-library-path.html