我们经常会遇到需要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无法加载等等问题解决办法...相关推荐

  1. java构造和解析json_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  2. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

  3. mysql 删除数据表中数据_Mysql-删除数据表-三种方式详解

    Mysql 删除数据表的三种方式详解 用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, ...

  4. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

  5. Java书签 #MyBatis之setMapperLocations配置多个mapper路径的两种方法详解

    楔子:通向幸福的路很多,没有一条叫欲望.- 宫部美雪<火车> 1.今日书签 SpringBoot 集成 MyBatis 的项目中,怎么使用 sqlSessionFactoryBean.se ...

  6. 在网页中执行本地exe程序的两种方式

    一.有时候,需要在 网页上去执行本地的一个EXE文件,如果用javascript ,一般浏览器,由于安全问题,都会禁止掉这个特性.但经过测试,目前在ie,firefox中仍然可以用JS来实现,但在ch ...

  7. python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  8. DLL中导出函数的声明有两种方式

    本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...

  9. shell 不等于_关于shell编程中的整数值比较的两种方式的简单操作实例

    谈一谈关于shell编程中的整数值比较的两种方式 Shell编程有时处理一个对象时,需要我们对对象进行测试. 只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错. 这个测试的对象可以是文件. ...

  10. 把Java程序打包成jar文件包并执行

    把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...

最新文章

  1. linux 文件批量转utf8
  2. Zencart修改前台页面的字体颜色
  3. 【Python】原创 | 写一个符合人类思维的四舍五入函数(No round !!!)
  4. jpa query oracle 参数int为空_撸一个预言机(Oracle)服务,真香!—中篇
  5. 受限玻尔兹曼机RBM实现及能量值思考——matlab实现
  6. [译]WPF开源控件扩展库ControlzEx
  7. airpods删除别人的配对_怎么不让别人连我的airpods
  8. 2020魔幻“商战”:抢公章、发黄图、半夜翻工厂...最烂的小说都不敢这么写
  9. WIFI断网: 802.11协议Deauthentication Reason Codes
  10. Scala基础-01-Scala环境安装及基础语法(变量,函数)
  11. python集合特点和注意事项_Python:list 和 array的对比以及转换时的注意事项
  12. 机器学习- 吴恩达Andrew Ng 编程作业技巧
  13. windows驱动备份还原-(驱动软件无法更新)
  14. endnote x9破解版怎么导入word 2019使用呢?
  15. 机器人翻译软件测试,对我国几种机器翻译软件译文质量的测评
  16. linux 进程堆管理,对Linux堆内存释放的总结
  17. ElectronBot支线项目
  18. 前端面试题总结(HTML+CSS部分)
  19. c# 溢出抛异常_C#捕获堆栈溢出异常
  20. 关于网页制作的一些动态效果

热门文章

  1. Qt QChartView class
  2. RQ dashboard使用
  3. 2018 最好的自动化测试工具
  4. iOS开发 ☞ YY_Model
  5. mysql哨兵模式_redis 哨兵模式集群搭建
  6. 使用GitLab CI/CD进行自动测试和部署
  7. html中图片椭圆,CSS3技巧之形状(椭圆)
  8. 积分营销系统的优势知多少
  9. NCA: Neighbourhood Components Analysis
  10. SAR成像处理算法_CS算法_原理