2023-01-20 303
我想使用linux ubuntu中的JNI从JAVA程序调用C程序.
我是这个新手,我尝试了 http://www.ibm.com/developerworks/java/tutorials/j-jni/section2.html
.我已经创建了.java,.h,.c和.so文件.但是当我尝试运行程序时,我会遇到以下错误.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Sample1 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at Sample1.main(Sample1.java:13)
此例外表明.so jvm不可用.
将.so存在的目录添加到LD_LIBRARY_PATH中可以解决此问题.如果.so取决于其他.so库,则这些目录的存在也需要添加到LD_LIBRARY_PATH.
.
我刚刚试图将相同的样本用于我的CentOS上,并且与您遇到了相同的错误.正如已经回答的那样,JVM未能找到所需的SO文件.我成功地通过使用GCC遵循以下步骤来使它工作:
$ javac Sample1.java
$ javah Sample1
$ # Include paths must also be specified using -I option in the following gcc command line!
$ gcc -shared -I...snip... Sample1.c -o libSample1.so
$ # Library path for libSample1.so must also be specified!
$ java -Djava.library.path=...path/to/libSample1.so... Sample1
如果您省略了共享库的” lib”前缀,则JVM由于某种原因未能找到它.
我不知道为什么.我不熟悉Linux中共享库的命名约定.
我希望这篇文章能有所帮助.
以上所述是小编给大家介绍的使用JNI时出现UnsatisfiedLinkError?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26132.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日
扫码二维码
获取最新动态