当前位置: 首页 > 知识库问答 >
问题:

如何在AWS Lambda中加载本机库?

朱起运
2023-03-14
task buildZip(type: Zip) {
archiveName = "${project.name}.zip"
from compileJava
from processResources
from('.') {
    include 'lib/**'
    include 'bin/**'
}
into('lib') {
    from configurations.runtime
}
}
ava.lang.UnsatisfiedLinkError: Unable to load library '/var/task/lib/libvips.so': Native library (var/task/lib/libvips.so) not found in resource path ([file:/var/task/, file:/var/task/lib/aopalliance-repackaged-2.5.0-b42.jar, file:/var/task/lib/asm-all-repackaged-2.5.0-b42.jar, file:/var/task/lib/aws-java-sdk-core-1.11.336.jar, file:/var/task/lib/aws-java-sdk-kms-1.11.336.jar, file:/var/task/lib/aws-java-sdk-s3-1.11.336.jar, file:/var/task/lib/aws-lambda-java-core-1.1.0.jar,....

共有1个答案

桑成荫
2023-03-14

您需要指定java.library.pathJVM属性。

通过修改JVM命令行选项

 JAVA_OPTS = $JAVA_OPS -Djava.library.path= /var/task/lib/ 
 java $JAVA_OPTS ...

或者直接在代码中修改

System.setProperty("java.library.path", "/var/task/lib/");
System.loadLibrary("libvips.so");
 类似资料:
  • 我一直在阅读OS X Java Developer Tools,以帮助使我的应用程序与操作系统更“原生”。我在这个特殊的部分发现了一些有趣的东西。(重点是地雷) 要将与分辨率无关的tiff、icns或pdf文件从应用程序包的Resources文件夹加载到Java应用程序中,请使用的方法。您传递到中的字符串的格式为。不包含映像的文件扩展名。还要注意,当用户界面比例因子的值不是1.0时,Sun 2D渲

  • 问题内容: 我想在Tomcat中添加gdal库。我读了Tomcat中找不到的本机库,但不知道应该在哪里添加。 错误: 我从以下网址下载了gdal 64位:http ://vbkto.dyndns.org:1280/sdk/PackageList.aspx?file= release-1600-x64-gdal-1-9-mapserver-6-2.zip 问题答案: 必须在而不是startup.ba

  • 问题内容: 我正在尝试编写一个将从用户的串行端口读取的Java小程序。为此,我将Java Comm API 与RXTX库结合使用。我已经成功地通过本地Java应用程序读取了数据,但似乎无法在applet中进行相同的操作。问题在于RXTX库是一个本机库,我还没有找到在Java小程序中加载该库的方法。我发现了两篇有趣的文章(在Applets中使用JNI引用了本文),但是这两篇文章已有10多年的历史了,

  • 我正在通过Node.js1的[node-java]包装器运行一个JNA编译的本机库 这个库是Hunsplaw JNA,它包装了Hunsplaw拼写库。 当试图从lib路径加载本机库时,所发生的情况是节点似乎挂起: 库就在那里,我也尝试了该方法的第二个选项,复制到一个临时文件夹中并从那里加载,这样我就可以看到 它就在那里。

  • 我有以下分布 主要的jar包含main方法,我想在其中访问lib提供的本机函数。所以被捆绑在发行版中。开始sh只需设置java的类路径和引导。 加载库的最佳方法是什么。那么应用程序内部的库呢?我知道两种方法: 系统。加载(绝对路径) 系统。loadLibrary(名称) 前者需要库在文件系统中的绝对路径,后者需要设置特定于应用程序的java。图书馆路径JVM参数。在这种情况下,哪种解决方案更好?将