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详解相关推荐

  1. (38)System Verilog类class复制详解

    (38)System Verilog类class复制详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类class复制详解 5)结语 ...

  2. (34)System Verilog类的多对象详解

    (34)System Verilog类的多对象详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类的多对象详解 5)结语 1.2 F ...

  3. (35)System Verilog类静态变量详解

    (35)System Verilog类静态变量详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类静态变量详解 5)结语 1.2 F ...

  4. (17)System Verilog枚举类型enum详解

    (17)System Verilog枚举类型enum详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog枚举类型enum详解 5)结语 ...

  5. (15)System Verilog结构体struct详解

    (15)System Verilog结构体struct详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog结构体struct详解 5) ...

  6. JVM源码分析之System.currentTimeMillis及nanoTime原理详解

    概述 上周@望陶问了我一个现象很诡异的问题,说JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常 ...

  7. nanotime java 博客园_JVM源码分析之System.currentTimeMillis及nanoTime原理详解

    JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版本里的实现不一样,之前我也没注意过这个细节,觉得非常奇怪,于是自己也在本地mac机器上马上测试了一 ...

  8. System.Diagnostics.Process.Start()用法详解

    System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如&qu ...

  9. java loadjs_Javarscript中模块(module)、加载(load)与捆绑(bundle)详解

    JS模块简介 js模块化,简单说就是将系统或者功能分隔成单独的.互不影响的代码片段,经过严格定义接口,使各模块间互不影响,且可以为其他所用. 常见的模块化有,C中的include (.h)文件.jav ...

最新文章

  1. Python入门100题 | 第012题
  2. HTML之CSS画三角形原理,纯CSS写三角形样式集合(原理解析)
  3. matlab2017b修改mesh的着色方案
  4. php中getdistance函数_php代码渗透测试 后门分析篇
  5. java基础 6 基本类型与运算
  6. break and continue;
  7. PHP学习九--会话控制session和cookie
  8. 测试鼠标传感器的软件,光电鼠标传感器的精密测量与控制系统 - 嵌入式设计应用 - 电子发烧友网...
  9. 提取swf素材_swf素材提取工具
  10. A股日内回转交易方法有哪些?
  11. BUUctf刷题第三天
  12. Top Android App使用的组件 2
  13. python回归分析结果怎么看_Python数据分析|线性回归
  14. 集中式、分布式版本控制系统的区别
  15. ♠♦♣TypeScript
  16. 北斗星通GPS调试记录
  17. 通过虚拟机模拟linux操作系统
  18. 土是独体字结构吗_“之”是独体字吗?还是上体结构的合体字?
  19. symbian学习转载
  20. 【论文翻译 假新闻检测综述 HICSS 2019】Can Machines Learn to Detect Fake News? A Survey Focused on Social Media

热门文章

  1. OpenCV-霍夫圆变换cv::HoughCircles
  2. persistence java_Java数据持久层 - Persistence Manager Factory
  3. linux 清空进程recv q,Linux中ss命令Recv-Q和Send-Q详解
  4. 自动化测试——接口测试——增删改查
  5. oracle 导出写入文件失败怎么办,编辑dmp文件解决导入导出问题(oracle 922错误 ,缺少或无效选项)...
  6. lisp一键室内标注_LISP-标注的自动位置调整
  7. rocketmq存储消息mysql_RocketMQ消息消费以及进度管理解析
  8. 零起点英语_【零起点英语】第100讲:The Cost of War 战争的代价
  9. Linux-定时任务(Crontab)基本用法
  10. 21天Jmeter打卡day16参数传递token传递,接口关联