UnsatisfiedLinkError是什么意思?

时间:2015-03-06 23:28:17

标签: java eclipse

我已经看到了很多具体的问题和对此消息的变体的答案,所有这些仅适用于该特定情况。我很好奇当抛出UnsatisfiedLinkError时的一般解决方案。这是什么意思?什么不找? .java文件?我错过了某处链接吗?在初始化过程中抛出了我得到的那个。

1 个答案:

答案 0 :(得分:5)

  

我很好奇当抛出UnsatisfiedLinkError时的一般解决方案。

一般解决方案:

1)阅读异常消息。

2)找出缺少本地库或本机方法

3)提供所需的库和/或配置JVM以便它可以找到它。

除此之外,细节是特定于案例和/或平台的。一些可能性包括:

  • 您要么错过了本地库(例如“.so”,“。dll”)。
  • JVM无法找到本机库,因为它不在JVM正在寻找的地方。
  • 本地库不是正确的版本;例如它没有实现特定的native方法,
  • 本机库是64位,您需要32位,反之亦然。 (即使在64位平台上,32位JVM也需要32位库。)
  

这是什么意思?

UnsatisfiedLinkError的javadoc说:

  

“如果Java虚拟机无法找到声明为native的方法的相应本机语言定义,则抛出该异常。”

我们可以肯定地说......在一般情况下,这就是你所要求的。

  

什么是找不到的?

见上文。

  

.java文件?

不。

  

我错过了在某个地方链接吗?

可能是,不。这取决于“链接到它”的含义。

  

在初始化过程中抛出了我得到的那个。

这是典型的。 JVM需要在类链接期间绑定native方法...这通常发生在应用程序启动期间。

  

这通常是代码中的问题还是项目设置中的问题?

它可能是。或者是其他东西。它还取决于您绘制“代码”边界的位置。你是否包括第三方依赖?

如果native方法声明不是代码的一部分>>你<<写道,那么它可能与你直接或间接使用你的代码的某些第三方库有关。但是在异常消息和堆栈跟踪中应该有线索。