java 无法加载dll_java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法...
我们经常会遇到需要java调用c++的案例,这里就java调用DLL本地动态链接库两种方式,和加载过程中遇到的问题进行详细介绍
1、通过System.loadLibrary("dll名称,不需要后缀名")
例如:
System.loadLibrary("StreamParser");
System.loadLibrary("StreamPackage");
System.loadLibrary("StreamConvertor");
那么这样写了之后你运行时就会发现,还是调用不了,因为这种加载dll的方式会自动到jre的lib文件夹下搜索这些本地动态链接库,那么没找到就肯定会报错,not found library!
这里用eclipse举个例子:
eclipse要这样设置:右键项目-->选择proerties选项-->找到java build path -->选中右边框中的Source选项卡,展开-->选中 native library location ,点击右边的edit按钮,就可以设置本地dll的路径了,这里我的dll放在项目中的lib文件夹下就可以点击workspace设置加载项目路径下的dll。如下图:
2、通过System.load("这里填写dll文件的完整路径")加载文件路径方式加载本地链接库
上一种加载dll的方式,你会发现不管是打成jar包还是war包都是不行的,那么怎么办呢,这时候第二种方式帮你解决这个问题,按照文件路径加载dll。
比如我是这样做的,我先将所有要加载的dll文件路径写在loadConf.proeprties文件中,在加载时读取这个 配置文件中的dll路径并且通过System.load(“文件路径”)加载本地动态链接库。
System.load(fileName);
总结:
第二种方式加载不论最终打包成jar包还是war包,只要在loadConf.proeprties中写好dll的路径就可以正确加载调用本地链接库,而不再会出现第一种出现的问题。
java 无法加载dll_java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法...相关推荐
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- mysql 删除数据表中数据_Mysql-删除数据表-三种方式详解
Mysql 删除数据表的三种方式详解 用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, ...
- java native函数库_Java 层调用 Native 层函数的两种方式
概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...
- Java书签 #MyBatis之setMapperLocations配置多个mapper路径的两种方法详解
楔子:通向幸福的路很多,没有一条叫欲望.- 宫部美雪<火车> 1.今日书签 SpringBoot 集成 MyBatis 的项目中,怎么使用 sqlSessionFactoryBean.se ...
- 在网页中执行本地exe程序的两种方式
一.有时候,需要在 网页上去执行本地的一个EXE文件,如果用javascript ,一般浏览器,由于安全问题,都会禁止掉这个特性.但经过测试,目前在ie,firefox中仍然可以用JS来实现,但在ch ...
- python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式
开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...
- DLL中导出函数的声明有两种方式
本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...
- shell 不等于_关于shell编程中的整数值比较的两种方式的简单操作实例
谈一谈关于shell编程中的整数值比较的两种方式 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件. ...
- 把Java程序打包成jar文件包并执行
把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...
最新文章
- linux 文件批量转utf8
- Zencart修改前台页面的字体颜色
- 【Python】原创 | 写一个符合人类思维的四舍五入函数(No round !!!)
- jpa query oracle 参数int为空_撸一个预言机(Oracle)服务,真香!—中篇
- 受限玻尔兹曼机RBM实现及能量值思考——matlab实现
- [译]WPF开源控件扩展库ControlzEx
- airpods删除别人的配对_怎么不让别人连我的airpods
- 2020魔幻“商战”:抢公章、发黄图、半夜翻工厂...最烂的小说都不敢这么写
- WIFI断网: 802.11协议Deauthentication Reason Codes
- Scala基础-01-Scala环境安装及基础语法(变量,函数)
- python集合特点和注意事项_Python:list 和 array的对比以及转换时的注意事项
- 机器学习- 吴恩达Andrew Ng 编程作业技巧
- windows驱动备份还原-(驱动软件无法更新)
- endnote x9破解版怎么导入word 2019使用呢?
- 机器人翻译软件测试,对我国几种机器翻译软件译文质量的测评
- linux 进程堆管理,对Linux堆内存释放的总结
- ElectronBot支线项目
- 前端面试题总结(HTML+CSS部分)
- c# 溢出抛异常_C#捕获堆栈溢出异常
- 关于网页制作的一些动态效果