UnsatisfiedLinkError是什么意思?

Sat*_*own 0 java eclipse

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

Ste*_*n C 5

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

一般解决方案

1)阅读异常消息.

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

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

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

  • 您要么缺少本机库(例如".so",".dll").
  • JVM找不到本机库,因为它不在JVM正在寻找的地方.
  • 本机库不是正确的版本; 例如,它没有实现具体的native方法,
  • 本机库是64位,您需要32位,反之亦然.(即使在64位平台上,32位JVM也需要32位库.)

这是什么意思?

javadoc UnsatisfiedLinkError说:

"如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出该异常."

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

什么不找?

往上看.

.java文件?

不.

我错过了某处链接吗?

可能,不,不.这取决于"链接到它"的含义.

我得到的那个在初始化过程中被抛出.

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

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

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

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