最近一个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函数遇到的几个问题相关推荐

  1. 使用Jna调用dll函数库(java使用jna对接硬件接口)

    记录一次项目经历,新公司开发过程中遇到了硬件对接的需求,没有接触过这方面的我一想到这些就很头大,花了几天时间来专门研究一下这个.一般硬件购买后厂家都会附赠一些开发文档,有各种语言的demo,里面其实重 ...

  2. JNA调用dll - java集成一美IP对讲SDK(dll文件)

    项目需要集成一美IP对讲机,一美SDK是dll文件,其他的dll文件集成做法也类似.记录一下 准备 将一美SDK文件的DataTran.dll文件放到系统C:\Windows\System32文件夹里 ...

  3. 使用Java中的jna调用dll

    简介: 在我们日常编码中在与硬件通信或者与其他的c++平台通信的时候经常用java调用dll文件,下面我们介绍俩种使用jna调用dll的方式. 如果是自己部门写的dll文件,一般会有头文件,头文件中会 ...

  4. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  5. c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  6. 在 C++Builder 工程里调用 DLL 函数

    调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 ...

  7. JNA调用原生函数 基础入门

     JNA调用原生函数 本文原名<使用JNA方便地调用原生函数>发表于2009年3月的"程序员"杂志上.感谢程序员杂志的许可,使这篇文章能够成为免费的电子版,发布于网络上 ...

  8. java中通过JNA调用dll

    ---恢复内容开始--- 1. JNA简单介绍 先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(尤其C/C++)写的代码进 ...

  9. JNA 调用 DLL

    JNA JNA 即 Java Native Access,是一个开源框架,是基于JNI做的封装.主要用于调用C或C++的动态库,达到程序需要实现的效果. 与JNI不同,JNI需要根据java生成.h文 ...

最新文章

  1. 简述数据字典的结构及其作用_数据结构——树基本概念及其遍历
  2. python numpy库中省略号...的一些用法
  3. Windows WorkFlow Foundation学习资源
  4. 登录及注册模块设置与流程图
  5. 华为4g无线路由器虚拟服务器设置方法,华为4g2pro路由器虚拟服务器设置
  6. oracle是CLOB类型mybatis,Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)
  7. java beancomparator_xkbeancomparator
  8. 联想昭阳K22-80机器关闭或开启触摸板方法
  9. C#反射基础知识实例总结
  10. IOS开发-ERROR ITMS-90096: Your binary is not optimized for iPhone 5
  11. 如何在WhatsApp中设置两步验证
  12. c51单片机万年历模拟,12864LCD屏显示实时温度与时间
  13. self-assessment
  14. 打破电动车定义,星越L Hi·P雷神增程电动SUV上市
  15. 7-4 Swan学院社团招新 (20 分)
  16. 如何绘制业务流程图(一)
  17. 精益生产表格_一个精益设计系统,我们如何构建表格套件
  18. [转]IText导出word之页眉页脚页码
  19. 一步一个脚印,QAD助力CAPP走出信息化进阶之路
  20. PowerBuilder 文本控件显示提示内容

热门文章

  1. dts无法识别excel中的数字值?
  2. UVA10213 How Many Pieces of Land【数学+大数】
  3. Eclipse Scout架构商业应用开发的工具与环境
  4. 八皇后(N皇后)问题算法程序(回溯法)
  5. Python 网络爬虫与信息获取(二)—— 页面内容提取
  6. 硬件设备 —— 蓝牙
  7. latex 基本用法(五)
  8. utilities(matlab)—— PSNR 值的计算
  9. C++基础::shared_ptr 编程细节(三)
  10. java 取商_Java读取word文档,转换为网页