linux下JNI开发

java开发过程中会遇到需要调用c/c++动态库(windows平台的dll和linux平台的so)的情况,可以使用JNI或者JNA技术。

JNA基于JNI技术开发,主要在上层作了类型自动转换的封装,让开发人员极易使用,无需JNI那样的繁杂的接口层开发。

但是,JNI的调用效率要比JNA高得多,如果一个操作涉及到java虚拟机与外部动态库的频繁调用,且对程序执行效率有要求的话,还是建议使用JNI。反之建议使用JNA,例如一些低频的调用,但调用的动态库中进行了一系列复杂操作,最后返回一个结果。

1、Java加载dll或so库文件的路径 java.library.path

Java的System.loadSystem.loadLibrary都可以用来加载库文件,loadLibray需要设置路径System.getProperty("java.library.path");

System.loadLibrary ("TestJNI");//通过java.library.path获取动态库
System.load("C://Documents and Settings//TestJNI.dll"); //绝对路径
1) 在linux下添加一个java.library.path的方法如下:

/etc/profile 后面加上一行 export LB_LIBRARY_PATH=路径

2) 使用默认的 java.library.path

打印当前系统的路径

System.out.println(System.getProperty("java.library.path"));

通常结果为结果为(以下结果仅供参考,需要自己运行后查看):
/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

3) 在执行程序的时候可以显示指定, -Djava.library.path=路径,这种会清除掉预设置的java.library.path的值 。实例如下:
java -jar -Djava.library.path=/home/test sound.war
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值