700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java通过JNI/JNA加载dll库文件调用C接口 出现“java.lang.UnsatisfiedLinkError:包

Java通过JNI/JNA加载dll库文件调用C接口 出现“java.lang.UnsatisfiedLinkError:包

时间:2024-03-18 07:18:26

相关推荐

Java通过JNI/JNA加载dll库文件调用C接口 出现“java.lang.UnsatisfiedLinkError:包

使用JNA封装Java映射接口后,由Java程序通过JNI/JNA加载dll库文件调用C接口,出现“java.lang.UnsatisfiedLinkError:包名.类.方法(参数)”问题。

通过JNI/JNA方式封装映射接口,实际上就是将Java的class文件编译成C语言的xxxx.h头文件,之后根据.h头文件来编写源文件。

所以这个过程中就会有参数对应、包名、路径、方法名称等的一致性要求。否则不是找不到方法,就是实例化不了。

还有2种常见的错误

1.java.lang.UnsatisfiedLinkError: no HelloWorld in java.library.path

2. Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx.xxx.Hello.myprint()V

错误原因:

错误1,主要是没有办法path路径中加载。

错误2,主要是没有myprint方法。

3 . 如果类库加载没有问题,排除dll本身问题(网上不少人遇到),dll没有问题,加载路径也没有问题,不能连接到方法。这个在命令行的时候不容易发现问题,移到生产环境中容易出现,可能你已经猜到了,就是包路径,类的包路径要和生成头文件类包路径一致。

Java通过JNI/JNA加载dll库文件调用C接口 出现“java.lang.UnsatisfiedLinkError:包名.类.方法(参数)”问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。