UnsatisifedLinkedError:无法在 jar 文件中找到存根库

Posted

技术标签:

【中文标题】UnsatisifedLinkedError:无法在 jar 文件中找到存根库【英文标题】:UnsatisifedLinkedError : Could not locate stub library in jar file 【发布时间】:2016-04-03 14:06:49 【问题描述】:

我正在尝试使用这个 jnr-jffi 库。它似乎依赖于jffi,所以我也构建了它并包含在我的 libs 文件夹中。

我加载原生代码的代码如下:

MATH_LIB = LibraryLoader.create(MathLib.class).load("math");

MATH_LIB.Multiply(1, 2);

我收到以下错误:

java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: could not locate stub library in jar file.  Tried [jni/Darwin/libjffi-1.2.dylib, /jni/Darwin/libjffi-1.2.dylib]

不管怎样,我确实包含了一个文件夹 jni,它似乎包含一堆适用于各种平台的本机库。

如何继续使用此库加载我的本机代码。

请注意,我在启动我的项目时尝试添加各种路径,并将库添加到我机器上的不同位置,但没有成功。

这意味着我需要弄清楚如何进一步调试?欢迎任何建议。

【问题讨论】:

我也面临同样的问题。你能解决这个问题吗? 你能解决这个问题吗? 对不起,伙计们。现在才看到这些cmets。我想我确实修复了它,但不记得是如何修复的。 【参考方案1】:

在使用 JNR 时使用maven 是最简单的。 Maven 会自动解析所有需要的依赖。

您可以将其添加到您的pom.xml

<dependency>
     <groupId>com.github.jnr</groupId>
     <artifactId>jnr-ffi</artifactId>
     <version>2.0.9</version>
</dependency>

或者查找更新的版本here。

【讨论】:

我尝试将它添加到 pom 中并与最终的 jar 一起打包。但是没用?【参考方案2】:

您需要文件的平台特定版本:libjffi-1.2.dylib 请参阅this 问题并尝试为您的平台版本查找包含上述库文件的相关 jar。

【讨论】:

以上是关于UnsatisifedLinkedError:无法在 jar 文件中找到存根库的主要内容,如果未能解决你的问题,请参考以下文章

无法推送到 Heroku '致命:无法访问..无法解析主机:(无);提供节点名或服务名,或未知'

无法写入内容:无法延迟初始化角色集合,无法初始化代理 - 无会话

chrome和ie无法打开网页,也无法连接WIFI

windows7管理员文件无法运行 无法访问指定设备 路径或文件

phantomjs无法打开共享对象文件

SMTP 错误:无法验证。无法发送消息。邮件程序错误:SMTP 错误:无法验证