JNI Java调用so包相关问题总结
来源:互联网 发布:国家网络应急中心考试 编辑:程序博客网 时间:2024/04/28 23:35
一系列的问题 虽然还没有解决 先总结一下
首先加载到动态链接库,再把库中对应的方法映射到java中的本地方法
一般格式如下
public class Test{ private native void hello(); public static void main(String[] args){ System.loadLibrary("Test"); Test test = new Test(); test.hello(); }}
这里使用System.loadLibrary("XXX")
来加载动态链接库,不需要使用.so后缀。
然而这样运行一般都会出现加载不到库的错误,原因是java默认从java.Library.path
中加载,一般默认的java.Library.path
是/usr/lib
,因此解决方法可以是将需要的so包放入/usr/lib目录下,但是这种解决方法肯定不好。
还有一种方法是配置环境变量
LD_LIBRARY_PATH=/....export LD_LIBRARY_PATH
不过这种方法也有局限性,一般线上的环境是没有权限的。
方法三,使用JVM参数指定java.Library.path
,如下:
java -Djava.library.path=/jni/library/path Test
这种方法也不是很好,因为不可能每次运行的时候都手动设置,如果本机运行的话,使用IDEA,可以考虑在VM Options中配置还比较方便
方法四,在程序中设置java.Library.path
System.setProperty("java.library.path", "/jni/library/path")
但是此方法无效,原因是java.library.path
只有在JVM启动的时候读取一次
方法五,直接使用绝对路径加载动态链接库
public class Test{ private native void hello(); public static void main(String[] args){ System.load("/home/lib/Test.so"); Test test = new Test(); test.hello(); }}
注意这样的话就需要使用.so后缀
这里还是会出现加载不到库的问题,百度了一下说是没有使用JNA加载,待解决……
阅读全文
0 0
- JNI Java调用so包相关问题总结
- JNI Java调用so包具体方法
- java调用JNI总结
- JNI-Java(Eclipse)调用dll/so
- Java JNI 调用 so 动态链接库
- java jni 调用.so动态库
- Java JNI 调用 so 动态链接库
- Java JNI调用so动态链接库
- JNI 使用总结 (JAVA 调用C语言编写的DLL/SO/SL文件)
- Android Studio下JNI调用与编译so包
- Java使用JNI调用DLL的问题总结
- Linux JNI 调用so
- linux jni调用so
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- Android Eclipse JNI 调用 .so文件加载问题
- 前端小白兔---笔记
- jS常用方法
- 2017——生活不仅有苟且,还有诗和远方
- 云星数据---Scala实战系列(精品版)】:Scala入门教程032-Scala实战源码-Scala 对象 02 单例对象
- ionic项目修改安卓发布的项目包名
- JNI Java调用so包相关问题总结
- layer插件移动端弹出框示例
- 单例模式 【宏定义实现】
- java的ArrayList使用方法详解(清晰的讲解)
- [待完成]Android Service的<service>标签
- 如何创建属于自己的Git(一)
- C#中StringBuilder类的使用
- 快排、堆排序、插入法比较
- 命令查看Linux服务器内存、CPU、显卡使用情况