Java通过JNI/JNA加载dll库文件调用C接口,出现“java.lang.UnsatisfiedLinkError: no XXX in java.library.path”问题
通过JNI加载动态dll库文件时,出现java.lang.UnsatisfiedLinkError: no XXX in java.library.path问题。有四种解决方法:
1、将dll文件放到tomcat的bin目录下,再使用System.loadLibrary("XXX");加载该动态库文件。
2、更改java.library.path的值方式
①、通过“String path = XXXXXXX.class.getClassLoader().getResource("//").getPath()”得到当前项目的相对路径,该路径到“classes”层,通过该路径构造path值。
②、通过“System.setProperty("java.library.path", path)”方法重新设置library path的值。
③、将动态库dll文件放到path路径下,调用“System.loadLibrary("XXX")”加载dll。
3、将dll文件放在JDK的bin目录下,再使用System.loadLibrary("XXX");加载该动态库文件。
/*** 加载外部.dll动态库文件*/
static {String osEnvironment = System.getProperty("os.name").toLowerCase();if (osEnvironment .contains("windows")) {System.loadLibrary("demoLib01");System.loadLibrary("demoLib02");System.loadLibrary("demoLib03");} else if (osEnvironment .contains("linux")) {System.loadLibrary("demoLib01");System.loadLibrary("demoLib02");}}
4、通过“System.load(“path+xxx.dll”)”加载
①、将dll文件放到项目中。
②、通过“XXX.class.getClassLoader().getResource("//").getPath()”得到项目的路径。
③、得到dll的具体路径。
/*** 加载外部.dll动态库文件*/
static {//相对路径pathString path = XXXXXX.class.getClassLoader().getResource("//").getPath();//本地DEBUG的时候需放开下面这句代码;打jar包时注释掉path = path + File.separator + "com" + File.separator + "server"+File.separator+ "study" + File.separator+"demo"+File.separator+"day01"+File.separator;//如果dll库有依赖,加载顺序按照依赖顺序即可System.out.println("动态库文件路径" + path);System.load(path + "demoLib01.dll");System.load(path + "demoLib02.dll");System.load(path + "demoLib03.dll");System.out.println(System.getProperty("java.library.path"));}
Java通过JNI/JNA加载dll库文件调用C接口,出现“java.lang.UnsatisfiedLinkError: no XXX in java.library.path”问题相关推荐
- android 加载三方so的方法_Android开发教程之动态加载so库文件的方法
Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...
- QLibrary 动态加载外部库文件
/*转载请注明出处,谢谢*/ 背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能).主模块是一个可执行程序,子模块为动态库,可以加载在主模块中. 问题:每添加一个扩展功能就要修改一下主模 ...
- CrossWalk - Android 动态加载so库文件
转自: https://segmentfault.com/a/1190000002919135 之前看到简书Android客户端使用的编辑器,甚是喜欢,它的优雅以及高性能的特点让我爱不释手,很想自己也 ...
- Android NDK下STD库share static方式加载 (so库混乱调用问题)
结论 -DANDROID_STL=c++_shared 有该选项 share方式加载STL,打包的so库不含有STD代码 没该选项 static方式加载STL. // 打so库的build.gradl ...
- java.lang.UnsatisfiedLinkError: no XXX in java.library.path
其中涉及的测试源码如下: For those who didn't install Java with default settings, a systematic way for solving J ...
- Kubernetes(Docker)容器部署加载不到 .so动态链接文件(java.lang.UnsatisfiedLinkError: no xxx in java.library.path)
找了一下午,网上文章有很多,但都不适用,因为我是通过容器进行部署服务,然后容器加载.so动态链接文件,所以网上大多数文章是设置Linux的动态链接目录,这里统一记录一下解决方法: 1.Linux设置L ...
- qt int转换成qstring_Qt 加载cern-root库 并调用root类
cern-root是欧洲核子研究中心CERN开发的基于C++,可与python,R,Fortran等语言进行绑定的数据处理框架.cern-root最初基于Qt开发,在root5之前可通过Qt来开发ro ...
- qt中append函数_Qt 加载cern-root库 并调用root类
cern-root是欧洲核子研究中心CERN开发的基于C++,可与python,R,Fortran等语言进行绑定的数据处理框架.cern-root最初基于Qt开发,在root5之前可通过Qt来开发ro ...
- 查看开源操作系统ReactOS源码,解决dll库动态库加载失败问题(调用LoadLibrary加载失败)
目录 1.动态加载dll库去调用库中的函数 1.1.调用系统dll库中未公开的接口
- c++显式加载dll并使用DLL的类
转载自: http://blog.163.com/tianjunqiang666@126/blog/static/8725911920121064573594/ 首先需要强调,当使用某个类时一般 ...
最新文章
- 特斯拉“国王”王权不保
- Django视图层总结
- SupeSite后台添加新闻增加【预览】功能
- python万年历差农历程序_公历转农历的python实现
- Linux 启/关 自启动服务
- assert函数的作用
- elementary os(ubuntu)开启ipv6 与走SwitchyOmega代理
- Exception in thread “main“ java.lang.UnsupportedOperationException Arrays.asList中add报错
- 医学专业失业率最高 三类相关行业人才紧缺
- Java多线程详解(线程不安全案例)
- 【C++设计模式】抽象工厂模式
- Amazon亚马逊 Vendor Central Label详解
- android root 升级失败怎么办,手机root失败怎么办 安卓手机root失败原因分析
- seo人员必须知道的基础知识
- 【Matlab图像处理】自动报靶系统(重弹孔)【含GUI源码 973期】
- Codeforces 854 B Maxim Buys an Apartment
- 关于CNN中出现的诸如conv4_3、conv8_2、conv7等标识的含义
- ceph kernel rbd (一): 简介
- CSS第七天学习总结—— vertical-align 属性应用
- 做刀尖上的舞者 京东无线服务端的三次架构演进