2023-01-20 342
使用JNA 4.0.0,在Linux上,我正在尝试加载一个本机库(libmean.so),该库在lib subdirectory中(库只是一个琐碎的示例,可以计算两个数字的平均值) .
i运行以下代码(在Eclipse内),在运行配置中设置-Djna.library.path=lib.
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 jna
ii 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/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态