`

JNA调用DLL函数遇到的几个问题

    博客分类:
  • J2EE
 
阅读更多

最近一个JSP项目需要用到分词模块,而分词模块实用C++写成的DLL库。于是上网搜各种方法,最后选择了JNA作为JSP调用DLL的工具。

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

JNA的使用方法有很多,这里只总结下我遇到的问题:

DLL放置的路径问题

JSP本身分为bean的src目录和WebRoot的脚本目录,而我们的DLL需要在src下的类中调用,于是遇到了将DLL和资源文件放置到什么地方的问题。

最后解决方法:将调用的DLL和LIB文件拷贝到C:/Windows/System32目录下可以访问。

解决过程:我试过将这些文件放到Src目录下,然后用Class.class.getResource("/").getPath()这种方法得到类的class路径,再得到资源文件的路径,结果没有成功。

DLL调用资源的路径问题

DLL可能会调用其他资源文件,比如我这里需要用到词典,路径也是个问题,不过这个较为简单,很容易解决:

将资源文件目录,拷贝到Src目录下面。在程序中使用Class.class.getResource("/").getPath()获得编译后的类所在的根目录,再连接上资源文件即可。

 

原文地址:http://www.crazyant.net/2012/12/26/jsp使用jna调用dll函数遇到的几个问题/

分享到:
评论

相关推荐

    JNA调用DLL函数.rar

    JNA调用DLL函数.rar 用VC6写了一个加减功能的动态库,供JAVA调用

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    java用JNA调用dll实例,包含各种参数调用

    实例中演示了各种参数形式的DLL函数调用,如:基本数据类型、基本数据类型的指针和引用、结构体、结构体的指针和引用、函数指针和回调函数、字符串指针、输入数组、输出数组等,非常实用。

    jna调用C语言函数库dll、so例子

    jna调用C语言函数库dll、so jni介绍

    jna调取dll示例demo

    java后端springBoot框架使用jna调取C语言的dll接口(停车场道闸接口) 包含构造体的调用, 回调函数的调用,JNA和C / C ++的数据类型映射,Pointer类型的使用

    jna 调用dll需要用到的jar包

    开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。 优点 JNA可以让你像调用一般java方法一样直接调用本地方法。就和直接执行本地方法差不多,而且...

    jna调用C++dll

    一个java通过jna调用C++ dll库的列子,包括C++dll中含回调函数,回调java方法

    JNA调用VC++dll

    JNA调用VC++dll;boolean,String,int,loog,结构体指针,VC++通过回调函数调用java函数

    如何使用JNA调用本地C/C++动态链接库详细示例代码

    详细演示了如何通过JNA实现以下形式的动态链接库接口: 1:基本数据类型 2:基本数据类型的指针和引用 3:结构体 4:结构体的指针和引用 5:函数指针和回调函数 6:字符串指针 ...JNA调用本地动态链接库;

    JNA_3.5.1_jar包和JNA—快速调用原生函数文档

    java调用dll所需要的两个jar jna-3.5.1.jar和platform-3.5.1.jar 以及JNA操作文档,函数映射等等

    JNI--java调用不同平台的动态链接库,dll,so,完美,全教程

    我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦...使用 JNA ,不需要再编写适配用的 .dll/.so ,只需要在 Java 中编写一个接口和一些代码,作为 .dll/.so 的代理,就可以在 Java 程序中调用 dll/so 。

    jna call dll.rar

    JNA 调用c++dll,示例展示 回调函数,结构体、联合体使用方法。 本人是做c++开发,因项目需要,看了一周的java,经过三天的研究,成功实现示例展示回调函数,结构体、联合体使用方法。希望对大家有所帮助

    JNA(java和vc++之间调用)

    java使用JNA调用VC++dll的 java代码和VC++dll代码;传递和返回普通类型参数,传递结构体类型指针,使用回调函数实现VC++调用java函数

    JNA最新源文件jar包

    开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射,大大降低了Java调用本体共享库的开发难度。JNA与.NET平台上的P/Invoke机制一样简单和方便。

    读写15693标签Java_Jna示例源码.rar

    Java通过JNA调用DLL动态库函数读写15693标签示例源码,内含JNA包,函数说明:https://blog.csdn.net/zhangjin7422/article/details/83215394

    JNA-Call-DLL.tar.gz

    Java调用DLL/so源代码JNA和JNative 调用现有的.dll/.so文件,使用JNI技术调用,我们首先需要另外使用C语言写一个.dll/.so共享库,使用SUN规定的数据结构替代C语言的数据结构,调用已有的dll/so中公布的函数。

    Java 调用 TSC标签打印机

    1、该练习是 JNA(Java Native Access)调用 TSC 打印机的 dll 文件,操作 TSC 打印机的练习。 2、包结构 │ ReadMe.txt │ ├─DLL │ 32bit.zip │ 64bit.zip │ ├─lib │ jna.jar │ ├─ReadMe │ ...

    JNA 3.3.0 API

    JNA允许使用JAVA方法调用方式来直接调用本地函数.它提供了一个动态的C语言编写的转发器,自动实现JAVA类型和C类型的映射. JNA使用一个小型本地库存根来动态调用本地代码.开发者需要定义一个JAVA接口来描述本地库存的...

    jna包及示例和VS2010入门

    开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。 JNA3.09API参考手册.chm 是我制作的JNA类库3.09版的Java API参考手册。方便查找。 JNA是最新的...

Global site tag (gtag.js) - Google Analytics