Я хотел бы отправить свое приложение в виде отдельного файла JAR. Файл jar должен содержать все файлы классов, а также две общие библиотеки. Одна из этих общих библиотек написана для JNI и по сути является косвенной к другой (что составляет 100% C).
Сначала я попытался запустить файл JAR без библиотек, но доступ к ним осуществлялся через переменную среды LD_LIBRARY_PATH. Это работало нормально.
Затем я помещаю библиотеку JNI в файл jar. Я читал о загрузке библиотек из jar-файлов, сначала скопировав их во временный каталог, и это хорошо сработало для меня (обратите внимание, что библиотека 100% C была загружена, как и раньше).
Теперь я хочу поместить обе библиотеки в банку, но я не понимаю, как убедиться, что они будут загружены. Конечно, я могу скопировать их оба во временный каталог, но когда я загружаю «косвенный», он всегда дает мне:
java.lang.UnsatisfiedLinkError: /tmp/.../libindirect.so: /libpure.so: невозможно открыть общий объектный файл: такого файла или каталога нет
Я пытался заставить JVM сначала загрузить библиотеку "100% C", явно вызвав System.load (...) для своего временного файла, но это не сработало лучше. Я подозреваю, что система ищет его при разрешении ссылок в libindirect.so, но не заботится о том, что загрузила JVM.
Может ли кто-нибудь помочь мне в этом?
Спасибо