JNA UnsatisfiedLinkError-当我把java.library.path设置为一个假值时,它就会工作。

 2023-01-20    342  

问题描述

使用JNA 4.0.0,在Linux上,我正在尝试加载一个本机库(libmean.so),该库在lib subdirectory中(库只是一个琐碎的示例,可以计算两个数字的平均值) .

i运行以下代码(在Eclipse内),在运行配置中设置-Djna.library.path=lib.

JNA UnsatisfiedLinkError-当我把java.library.path设置为一个假值时,它就会工作。

import com.sun.jna.Library;
import com.sun.jna.Native;

public class Mean {
  public interface MeanLib extends Library {    
    MeanLib INSTANCE = (MeanLib) Native.loadLibrary("mean", MeanLib.class);
    double mean(double a, double b);
  }
  public static void main(String[] args) {          
    double result = MeanLib.INSTANCE.mean(1.0, 3.0);
    System.out.println(result);
  }
}

,但这失败了以下例外:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't obtain updateLastError method for class com.sun.jna.Native
at com.sun.jna.Native.initIDs(Native Method)
at com.sun.jna.Native.<clinit>(Native.java:139)
at com.sun.jna.examples.Mean$MeanLib.<clinit>(Mean.java:64)
at com.sun.jna.examples.Mean.main(Mean.java:72)

通过反复试验,我发现,如果我还设置了java.library.path,则代码开始工作.

但是,无论该属性的价值如何,它都可以工作.例如,我可以设置-Djava.library.path=xxxxxxx,并且它继续工作.一个空值也可以工作.

发生了什么事?

推荐答案

根问题是系统上安装了JNA的较旧版本:

$ dpkg -l | grep -i jnaii  libjna-java  3.2.7-4 Dynamic access of native libraries from Java without JNI

JNA开始尝试加载其Bootstrap本地库.如文档中所述,它在各个地方搜索了这一点.

通过使用-Djna.nosys=true标志来解决该问题,该标志迫使JNA从您的jna.jar而不是从系统中加载本机库.

将java.library.path设置为胡说八道具有相似的副作用 – 它覆盖了普通java.library.path,防止JNA的系统版本被加载,并从您的本地jna.jar上倒下版本.

调试设置-Djna.debug_load=true也可用于诊断JNA问题.

其他推荐答案

$ dpkg -l | grep -i jna

尝试此命令,如果您获得此输出

ii  libjna-java  3.2.7-4 Dynamic access of native libraries from Java without JNI

或任何其他输出,然后您需要删除该系统中的JNA,因为如果程序本身具有JNA ja jna jna jna,则不需要系统JNA.所以做这样的事情.

sudo apt-get autoremove libjna-java

并尝试再次重新启动该应用程序.它将运行并且不运行,然后尝试安装新版本的 libwebkit-gtk .

其他推荐答案

我通过apt-get安装NetBeans 7时遇到了这个错误,该apt-get插入了libjna-java(3.2.7-4).

由于Netbeans 7是旧的,因此在删除Debian软件包后,我通过其Shell Installer安装了版本8.确保并自动摆脱Libjna.

以上所述是小编给大家介绍的JNA UnsatisfiedLinkError-当我把java.library.path设置为一个假值时,它就会工作。,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26077.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。