专栏首页eguid开源技术分享java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法

java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/eguid_1/article/details/52535127

我们经常会遇到需要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的路径就可以正确加载调用本地链接库,而不再会出现第一种出现的问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 自己实现的数据表格控件(dataTable),支持自定义样式和标题数据、ajax等各种自定义设置以及分页自定义

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    eguid
  • 为什么使用dojo?dojo与jquery有什么不同?dojo适合什么开发场景?

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    eguid
  • CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现

    CRC16算法有很多种,本篇文章会介绍其中的CRC16-CCITT-XMODEM算法

    eguid
  • 一图读懂JVM架构解析

    本文阐述了JVM的构成和组件,配图清晰易懂,是学习Java开发者的入门必读文章。 每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或...

    CSDN技术头条
  • 为自己的APP添加启动页

    打开APP的时候会有一个启动过程 ,为了较好的体验,一般加载一个启用页(有的是广告······)。 最熟悉的打开微信时候一个地球图片,这篇文章简单介绍怎么加载该...

    小尘哥
  • JVM体系结构的解释

    每个Java开发人员都知道字节码将由JRE(Java运行时环境)执行。但许多人并不知道JRE是Java虚拟机(JVM)的实现,它分析字节码,解释代码并执行它。作...

    liuxuewen
  • JavaSE 基础学习之一 —— Java 的简介

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/...

    剑影啸清寒
  • JVM 架构解读

    每个Java开发人员都知道字节码由JRE(Java运行时环境)执行。但许多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码...

    哲洛不闹
  • 理解Java里面的jvm,jre,jdk的区别和联系

    我是攻城师
  • TIOBE:2016年全球1月编程语言排行榜 Java成2015年度语言

    Java的上涨齐头并进,Objective-C的跌幅(-5.88%)。苹果公司宣布Swift替换Objective-C的前一段时间是今年秋天的主要原因。据预计,...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券