Установка пользовательских файлов общей библиотеки / или любых альтернативных вариантов - PullRequest
0 голосов
/ 28 марта 2012

У меня есть приложение (для CentO), в котором используются две пользовательские общие библиотеки "libMyInit.so" (связаны с libMyInit.so.1 и libMyInit.so.1.0.1) и libMyUtil.so (связаны с libMyUtil.so .1 и libMyUtil.so libMyUtil.so.1.0.1). Они присутствуют в упаковке приложения, например, MyApp / bin / libMyInit.so и MyApp / bin / util / libMyUtil.so вместе с соответствующими библиотеками. Когда мне нужно запустить приложение, я должен явно добавить вышеупомянутые пути к LD_LIBRARY_PATH, без которого оно выдает ошибку вроде: ERROR:Unable to load native MyUtil library. Reason: no MyUtil in java.library.path.

Можно ли как-нибудь избежать ручного добавления библиотек в LD_LIBRARY_PATH? Что-то, что я могу сделать во время компиляции общих библиотек или позже, чтобы пользовательские библиотеки .so находились в java.library.path?

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Один из способов - скопировать эти библиотеки в один из каталогов / usr / lib, / lib, / usr / local / lib.

0 голосов
/ 28 марта 2012

ИМХО лучший способ сделать это - использовать пользовательский System.loadLibrary в статической части ваших классов.Взгляните на мои привязки Java portaudio здесь @ github , особенно на классы LoadLibrary и JPA.

Класс LoadLibrary выбирает собственную библиотеку на основе типа ОС иархитектура, распаковывает lib из ее JAR в временную папку и загружает ее оттуда.

JPA теперь просто нужно вызвать LoadLibrary.load, и все работает автоматически на всех поддерживаемых ОС, и вам нужен только один JARфайл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...