Загрузка libMagickCore через Java JNA на AWS Lambda - PullRequest
0 голосов
/ 07 февраля 2019

В настоящее время я пытаюсь развернуть последнюю версию libvips (8.7.4) для функции AWS Lambda Java 8.Функция определила интерфейс JNA для libvips.

Мы разветвляли libvips-lambda GitHub-репозиторий, который предоставил цепочку сборки для более старой версии, и обновили ее для работы на 8.7.4 (см. Ветку develop в нашей fork ).

Затем мы переместили libvips и все его зависимости в папку с именем lib в нашем ZIP-архиве развертывания AWS Lambda и установили следующие переменные среды: LD_LIBRARY_PATH: /var/task/lib.

Затем мы пытаемся загрузить библиотеку в нашей функции Java:

Native.load("lib/libvips.so", ...

Это в конечном итоге приводит к следующему исключению:

libMagickCore-7.Q16HDRI.so.2: cannot open shared object file: No such file or directory: java.lang.UnsatisfiedLinkError
java.lang.UnsatisfiedLinkError: libMagickCore-7.Q16HDRI.so.2: cannot open shared object file: No such file or directory
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:288)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
at com.sun.jna.Library$Handler.<init>(Library.java:179)
at com.sun.jna.Native.load(Native.java:591)
at com.sun.jna.Native.load(Native.java:565)

Странно то, что libMagickCore-7.Q16HDRI.so.2присутствует в нашей функции AWS Lambda в каталоге lib.И, насколько я понимаю, установка LD_LIBRARY_PATH ENV в этот каталог должна показать JNA, куда загружать собственные зависимости.

Что-то не так в моей настройке Lambda или предположение, что JNA должна находить библиотеки, когда установлен LD_LIBRARY_PATH?

...