В настоящее время я пытаюсь развернуть последнюю версию 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
?