JAVA调用DLL -- JNA和Fat Jar的使用及打包问题(一)

概述:
由于工作的需要,探索了下有关JAVA调用DLL方面的内容,经过三天的努力,基本掌握了解决此问题所用到的内容。
后面的应用工程中,逐渐加深的对JAVA调用DLL,及使用JAVA封装C++接口的方法和方式的理解,并对给文档进行补充总结。
在解决此问题的过程中,需要用到的相关内容有JNA和Fat Jar。

1、 工具简介

1-1、 JNA简介
JNA(Java Native Access)提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function映射。

1-2、 Fat Jar简介
一个非常简单的软件打包解决方案,它利用 Java 的定制类装入器,动态地从单一档案文件中装入应用程序所有的类,同时保留支持 JAR 文件的结构。在Eclipse开发平台中包含着打包功能,但是功能不够完善,使用Fat Jar打包插件,可以方便的完成各种打包任务,可以包含外部的包等。
因为要把写好的JAVA接口工程要打成jar包,但这个包里包含着引用的外部包—就是前面所述的JNA包。为了使外部包JNA能够使用,对JAVA接口工程打包时要使用Fat Jar打包插件来完成。

2、使用方法

2-1、JNA的使用方法
下载jna.jar。因为不需要安装,直接链接引用就行。
具体使用方法,后面例子里详细说明。

2-2、Fat Jar安装方法
说明:因为安装Fat Jar要考虑到版本的问题,下面先介绍下Eclipse各个版本及其代号。
Eclipse4.4以前的版本对应的Fat Jar是:net.sf.fjep.fatjar_0.0.31.jar,但官网上现在(2016.10)最新版本即为该版本。但对于Eclipse4.4以后的版本,则需要对应的Fat Jar是:net.sf.fjep.fatjar_0.0.32.jar。(该版本已有,可自行搜索)
这里写图片描述
说明:因为我这里使用的Eclipse的版本是Mars,所以对应的Fat Jar是:net.sf.fjep.fatjar_0.0.32.jar。

下载相应的压缩包,解压后把plugins下的这里写图片描述 ,或者下载的文件就是这里写图片描述。拷贝到Eclipse安装目录下的plugins文件夹中,重新启用Eclipse,打开Eclipse,看到WindowsPreference下有fat jar preference,则说明已经安装成功。(如下图)
这里写图片描述

至于,打包时怎样使用该插件,在后面的实例中,再做详细介绍。

补充:加入JNA
1、可以在工程下创建一个lib文件,把解压好的jna.jar放入lib文件夹中。
2、可以引用外面的jna.jar文件
加入JNA的方法:
1)、选择所要添加JNA的工程,选择“project”–>”properties”
这里写图片描述
2)、根据jna.jar在该工程的lib文件夹中还是引用外部的jna.jar文件,来选择“Add JARs…”或者”Add External JARs”,我们这里因为在工程里添加的lib文件夹中添加了jna.jar文件,所以这里选择“Add JARs…”
这里写图片描述
后续介绍实例,和打包时的一些问题。

3、实例说明:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

注:下文中的 *** 代表文件名中的版本号。 # 【jna-***.jar中文文档.zip】 中包含: 中文文档:【jna-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【jna-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【jna-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【jna-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【jna-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: jna-***.jar中文文档.zip,java,jna-***.jar,net.java.dev.jna,jna,***,com.sun.jna,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【jna-***.jar中文文档.zip】,再解压其中的 【jna-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'net.java.dev.jna', name: 'jna', version: '***' Gradle (Short): implementation 'net.java.dev.jna:jna:***' Gradle (Kotlin): implementation("net.java.dev.jna:jna:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` com.sun.jna com.sun.jna.internal com.sun.jna.platform ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` com.sun.jna.AltCallingConvention com.sun.jna.Callback com.sun.jna.Callback.UncaughtExceptionHandler ...... ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值