java system.load()_System.load()与System.loadLibrary()
Java load 和 loadlibrary方法的区别
1. 相同点:
两个方法都是用来装载dll文件,不论是JNI库文件还是非JNI库文件。本地方法在被调用时都需要通过这两发方法之一将其加载至内存。
2. 不同点
a. System.load(String filename) ,参数为dll文件的绝对路径,可以是任意路径。
System.load("D:\\java\\Test.dll");
b. System.loadLibrary(String libname) 参数为dll文件名,不包含库文件的扩展名。
例如你可以这样载入一个windows平台下JNI库文件
System. loadLibrary ("Test");
注意:System.loadLibrary(String libname)和java.library.path变量对应的路经相关,此方法加载的文件必须是在java.library.path这一jvm变量所指向的路径中。
可以通过如下方法来获得该变量的值:
System.getProperty("java.library.path");
默认情况下,在Windows平台下,该值包含如下位置:
1)和jre相关的一些目录2)程序当前目录3)Windows目录4)系统目录(system32)5)系统环境变量path指定目录
3. dll依赖加载方式
如果你要载入的库文件静态链接到其它动态链接库,例如Test.dll 静态链接到dependency.dll, 那么你必须注意:
1)System.load() 方式
System.load("D:\\java\\Test.dll");
那么即使你把dependency.dll同样放在D:\\java\\Test下,load还是会因为找不到依赖的dll而失败。因为jvm在载入Test.dll会先去载入Test.dll所依赖的库文件dependency.dll,而dependency.dll并不位于java.library.path所指定的目录下,所以jvm找不到 dependency.dll。
你有两个方法解决这个问题:
一: D:\\java\\加 入到java.library.path的路径中,例如加入到系统的path中。load()方法会区path路径寻找依赖库。
二: 先加载依赖库,再加载当前库
//先调用
System.load("D:\\java\\dependency.dll");
//让jvm先载入dependency.dll,然后再调用
System.load("D:\\java\\Test.dll");
2)System. loadLibrary() 方式
System. loadLibrary ("Test");
只需要把dependency.dll放在任何java.library.path包含的路径中即可,也包括和Test.dll相同的目录。
java system.load()_System.load()与System.loadLibrary()相关推荐
- Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5
java 中调外部工具 做word转pdf ,没有生成pdf, log中出现 [开始转换文档... finish [WINWORD] convert. Could not load file or ...
- Could not load file or assembly 'System.Web.Extensions
今日第一次玩AJAX,在本地我们调试运行AJAX.NET程序完全没有问题,但是一旦搭建网站后就出现 了一个Web.config文件异常: Configuration Error Description ...
- Could not load file or assembly 'System.Web.Extensions, Version=3.5.0.0
前些天发现这个问题的,本来原有的项目是用VS2005开发的,后来装了VS2008,没想到问题就来了. 原项目是ASP.NET 2.0,用到了Ajax Extension,.NET 2.0用的Ajax ...
- 报错:Could not load file or assembly ‘System.Core, Version=2.0.5.0
报错: 环境: window xp sp3 net 4.0 报错: Could not load file or assembly 'System.Core, Version=2.0.5.0, Cul ...
- Net core 报 Could not load file or assembly ‘System.Security.Permissions 错误
完整错误提示 System.IO.FileNotFoundException:"Could not load file or assembly 'System.Security.Permis ...
- Caused by java.lang.UnsatisfiedLinkError Cannot load library
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library 在使用NDK调用C++代码编译而成的链接库文件的时候,有时候会出现链接错误 ...
- java 系统 类_JAVA系统类 System的简单整理
对系统属性看着JDKapi做了简单的记录,尤其是文件分隔符,以及获取系统时间,数组拷贝实用比较多谢,随意正对这几个做下简单整理,需要引入junit单元测试的jar包 //获取所有系统属性 @Test ...
- Java基础学习笔记之:System类;Math类;Arrays类BigInteger,BigDecimal
System类 在API中System类介绍的比较简单,我们给出定义,System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作. System类不能手动创建对象,因为构造方法被priv ...
- mysql8连接数据库显示cache_MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size'...
本文主要向大家介绍了MySQL数据库之mysql 8.0 java连接报错:Unknown system variable 'query_cache_size' ,通过具体的内容向大家展现,希望对大家 ...
最新文章
- Linux中/proc目录下文件详解
- flask secure_filename 不能识别中文名的解决办法
- 2021美国科学天才奖发榜!16名华裔高中生入围「少年诺奖」
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
- mysql给字段设置默认值,以及mysql的严格模式
- 给gridview动态生成radiobutton添加OnCheckedChanged事件
- 与IO相关的等待事件troubleshooting-系列9
- [每日一题] 11gOCP 1z0-052 :2013-09-23 Oracle11g 内存参数设置...................................C7...
- [codevs2597]团伙并查集
- xpath的一些测试
- Python列表元素的循环删除问题
- 动态规划 BZOJ2287【POJ Challenge】消失之物
- LINGO 11.0安装教程
- 打不开malloc和free函数
- MTK机型刷机授权 固件转换 分区提取 nv备份 恢复工具教程
- 一张程序员人生图,很有意思
- 微信扫码下载APK遮罩提示示例
- SVA序列表达式操作符(intersect、within、throughout、first_match、matched)
- ODrive应用 #8 故障排除
- bootstrap 表单验证
热门文章
- origin设置不同区域的颜色_[测试狗]Origin入门教程(二十四):效率翻倍小技巧——修改默认字体...
- 遍历children_589. N叉树的前序遍历
- C语言case字句有什么作用,switch case 语句的使用规则
- python redis 哨兵_Redis哨兵机制
- 创造型模式——工厂模式
- 11-Docker Bridge详解
- Problem A: 童年生活二三事
- 螺旋方阵问题【数组】
- openlayers入门开发系列之图层控制
- 在VMWare Workstation 8.0.1中安装苹果MAC OS X Lion Part 2