JNA调用DLL函数遇到的几个问题
最近一个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函数遇到的几个问题相关推荐
- 使用Jna调用dll函数库(java使用jna对接硬件接口)
记录一次项目经历,新公司开发过程中遇到了硬件对接的需求,没有接触过这方面的我一想到这些就很头大,花了几天时间来专门研究一下这个.一般硬件购买后厂家都会附赠一些开发文档,有各种语言的demo,里面其实重 ...
- JNA调用dll - java集成一美IP对讲SDK(dll文件)
项目需要集成一美IP对讲机,一美SDK是dll文件,其他的dll文件集成做法也类似.记录一下 准备 将一美SDK文件的DataTran.dll文件放到系统C:\Windows\System32文件夹里 ...
- 使用Java中的jna调用dll
简介: 在我们日常编码中在与硬件通信或者与其他的c++平台通信的时候经常用java调用dll文件,下面我们介绍俩种使用jna调用dll的方式. 如果是自己部门写的dll文件,一般会有头文件,头文件中会 ...
- python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
- c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...
在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...
- 在 C++Builder 工程里调用 DLL 函数
调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...
- JNA调用原生函数 基础入门
JNA调用原生函数 本文原名<使用JNA方便地调用原生函数>发表于2009年3月的"程序员"杂志上.感谢程序员杂志的许可,使这篇文章能够成为免费的电子版,发布于网络上 ...
- java中通过JNA调用dll
---恢复内容开始--- 1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进 ...
- JNA 调用 DLL
JNA JNA 即 Java Native Access,是一个开源框架,是基于JNI做的封装.主要用于调用C或C++的动态库,达到程序需要实现的效果. 与JNI不同,JNI需要根据java生成.h文 ...
最新文章
- 简述数据字典的结构及其作用_数据结构——树基本概念及其遍历
- python numpy库中省略号...的一些用法
- Windows WorkFlow Foundation学习资源
- 登录及注册模块设置与流程图
- 华为4g无线路由器虚拟服务器设置方法,华为4g2pro路由器虚拟服务器设置
- oracle是CLOB类型mybatis,Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)
- java beancomparator_xkbeancomparator
- 联想昭阳K22-80机器关闭或开启触摸板方法
- C#反射基础知识实例总结
- IOS开发-ERROR ITMS-90096: Your binary is not optimized for iPhone 5
- 如何在WhatsApp中设置两步验证
- c51单片机万年历模拟,12864LCD屏显示实时温度与时间
- self-assessment
- 打破电动车定义,星越L Hi·P雷神增程电动SUV上市
- 7-4 Swan学院社团招新 (20 分)
- 如何绘制业务流程图(一)
- 精益生产表格_一个精益设计系统,我们如何构建表格套件
- [转]IText导出word之页眉页脚页码
- 一步一个脚印,QAD助力CAPP走出信息化进阶之路
- PowerBuilder 文本控件显示提示内容