我目前正在尝试将最新版本的libvips(8.7.4
)部署到AWS Lambda Java 8函数。该函数为libvips定义了JNA接口。
我们分叉了libvips-lambda GitHub存储库,该存储库提供了较旧版本的构建链,并对其进行了更新以使其适用于8.7.4
(请参见{{3 }}。
然后,我们将libvips及其所有依赖项移至AWS Lambda部署ZIP存档中的文件夹develop
中,并设置以下环境变量:lib
。
然后,我们尝试在Java函数中加载该库:
LD_LIBRARY_PATH: /var/task/lib
这最终导致以下异常:
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
ENV设置到此目录应显示JNA在何处加载本机依赖项。
我的Lambda设置是否有问题,或者假设设置LD_LIBRARY_PATH
时JNA应该找到这些库?