System.load 和 System.loadLibrary详解
System.load 和 System.loadLibrary详解
1.它们都可以用来装载库文件,不论是JNI库文件还是非JNI库文件。在任何本地方法被调用之前必须先用这个两个方法之一把相应的JNI库文件装载。
2.System.load 参数为库文件的绝对路径,可以是任意路径。
例如你可以这样载入一个windows平台下JNI库文件:
System.load("C://Documents and Settings//TestJNI.dll");。
3. System.loadLibrary 参数为库文件名,不包含库文件的扩展名。
例如你可以这样载入一个windows平台下JNI库文件
System. loadLibrary ("TestJNI");
这里,TestJNI.dll 必须是在java.library.path这一jvm变量所指向的路径中。
可以通过如下方法来获得该变量的值:
System.getProperty("java.library.path");
默认情况下,在Windows平台下,该值包含如下位置:
1)和jre相关的一些目录
2)程序当前目录
3)Windows目录
4)系统目录(system32)
5)系统环境变量path指定目录
4.如果你要载入的库文件静态链接到其它动态链接库,例如TestJNI.dll 静态链接到dependency.dll, 那么你必须注意:
1)如果你选择
System.load("C://Documents and Settings// TestJNI.dll");
那么即使你把dependency.dll同样放在C://Documents and Settings//下,load还是会因为找不到依赖的dll而失败。因为jvm在载入TestJNI.dll会先去载入TestJNI.dll所依赖的库文件dependency.dll,而dependency.dll并不位于java.library.path所指定的目录下,所以jvm找不到dependency.dll。
你有两个方法解决这个问题:一是把C://Documents and Settings//加入到java.library.path的路径中,例如加入到系统的path中。二是先调用
System.load("C://Documents and Settings// dependency.dll"); 让jvm先载入dependency.dll,然后再调用System.load("C://Documents and Settings// TestJNI.dll");
2)如果你选择
System. loadLibrary ("TestJNI");
那么你只要把dependency.dll放在任何java.library.path包含的路径中即可,当然也包括和TestJNI.dll相同的目录。
System.load 和 System.loadLibrary详解相关推荐
- (38)System Verilog类class复制详解
(38)System Verilog类class复制详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类class复制详解 5)结语 ...
- (34)System Verilog类的多对象详解
(34)System Verilog类的多对象详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类的多对象详解 5)结语 1.2 F ...
- (35)System Verilog类静态变量详解
(35)System Verilog类静态变量详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类静态变量详解 5)结语 1.2 F ...
- (17)System Verilog枚举类型enum详解
(17)System Verilog枚举类型enum详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog枚举类型enum详解 5)结语 ...
- (15)System Verilog结构体struct详解
(15)System Verilog结构体struct详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog结构体struct详解 5) ...
- JVM源码分析之System.currentTimeMillis及nanoTime原理详解
概述 上周@望陶问了我一个现象很诡异的问题,说JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常 ...
- nanotime java 博客园_JVM源码分析之System.currentTimeMillis及nanoTime原理详解
JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一 ...
- System.Diagnostics.Process.Start()用法详解
System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如&qu ...
- java loadjs_Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
JS模块简介 js模块化,简单说就是将系统或者功能分隔成单独的.互不影响的代码片段,经过严格定义接口,使各模块间互不影响,且可以为其他所用. 常见的模块化有,C中的include (.h)文件.jav ...
最新文章
- Python入门100题 | 第012题
- HTML之CSS画三角形原理,纯CSS写三角形样式集合(原理解析)
- matlab2017b修改mesh的着色方案
- php中getdistance函数_php代码渗透测试 后门分析篇
- java基础 6 基本类型与运算
- break and continue;
- PHP学习九--会话控制session和cookie
- 测试鼠标传感器的软件,光电鼠标传感器的精密测量与控制系统 - 嵌入式设计应用 - 电子发烧友网...
- 提取swf素材_swf素材提取工具
- A股日内回转交易方法有哪些?
- BUUctf刷题第三天
- Top Android App使用的组件 2
- python回归分析结果怎么看_Python数据分析|线性回归
- 集中式、分布式版本控制系统的区别
- ♠♦♣TypeScript
- 北斗星通GPS调试记录
- 通过虚拟机模拟linux操作系统
- 土是独体字结构吗_“之”是独体字吗?还是上体结构的合体字?
- symbian学习转载
- 【论文翻译 假新闻检测综述 HICSS 2019】Can Machines Learn to Detect Fake News? A Survey Focused on Social Media
热门文章
- OpenCV-霍夫圆变换cv::HoughCircles
- persistence java_Java数据持久层 - Persistence Manager Factory
- linux 清空进程recv q,Linux中ss命令Recv-Q和Send-Q详解
- 自动化测试——接口测试——增删改查
- oracle 导出写入文件失败怎么办,编辑dmp文件解决导入导出问题(oracle 922错误 ,缺少或无效选项)...
- lisp一键室内标注_LISP-标注的自动位置调整
- rocketmq存储消息mysql_RocketMQ消息消费以及进度管理解析
- 零起点英语_【零起点英语】第100讲:The Cost of War 战争的代价
- Linux-定时任务(Crontab)基本用法
- 21天Jmeter打卡day16参数传递token传递,接口关联