最近一个JSP项目须要用到分词模块,而分词模块实用C++写成的DLL库。因而上网搜各类方法,最后选择了JNA做为JSP调用DLL的工具。java
JNA(Java Native Access )提供一组Java工具类用于在运行期动态访问系统本地库(native library:如Window的dll)而不须要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。函数
JNA的使用方法有不少,这里只总结下我遇到的问题:工具
JSP自己分为bean的src目录和WebRoot的脚本目录,而咱们的DLL须要在src下的类中调用,因而遇到了将DLL和资源文件放置到什么地方的问题。spa
最后解决方法:将调用的DLL和LIB文件拷贝到C:/Windows/System32目录下能够访问。接口
解决过程:我试过将这些文件放到Src目录下,而后用Class.class.getResource("/").getPath()这种方法获得类的class路径,再获得资源文件的路径,结果没有成功。资源
DLL可能会调用其余资源文件,好比我这里须要用到词典,路径也是个问题,不过这个较为简单,很容易解决:开发
将资源文件目录,拷贝到Src目录下面。在程序中使用Class.class.getResource("/").getPath()得到编译后的类所在的根目录,再链接上资源文件便可。get