gpt4 book ai didi

java - jna.loadLibrary 找不到 native 库文件

转载 作者:行者123 更新时间:2023-12-02 08:49:40 26 4
gpt4 key购买 nike

我已经使用 native 库包装器创建了自己的 jar。生成的 jar 的结构是:

library.jar
|- com (there are my .java classes)
|- libs (there is the native - libmylib.so)
|- META-INF

我按如下方式加载 native 库:

MyLibClass instance = (MyLibClass) Native.loadLibrary("mylib", MyLibClass.class);

现在我想在其他项目中添加这个库并使用它。但是当我创建 MyLibClass 的实例时,我收到错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'mylib':
libmylib.so: cannot open shared object file: No such file or directory

我应该如何解决这个问题?

最佳答案

JNA Getting Started 上所述页面,

使您的目标库可供 Java 程序使用。有几种方法可以做到这一点:

  • 首选方法是将 jna.library.path 系统属性设置为目标库的路径。此属性类似于 java.library.path,但仅适用于 JNA 加载的库。
  • 在启动 VM 之前更改适当的库访问环境变量。在 Windows 上这是 PATH,在 Linux 上是 LD_LIBRARY_PATH,在 OSX 上是 DYLD_LIBRARY_PATH
  • 使您的原生库在您的类路径上可用,路径为 {OS}-{ARCH}/{LIBRARY},其中 {OS}-{ARCH} 是JNA 的 native 库的规范前缀(例如 win32-x86linux-amd64darwin)。如果资源位于 jar 文件中,加载时会自动提取。

关于java - jna.loadLibrary 找不到 native 库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com