如何处理Java部署Tomcat时JNI与JNA调用DLL文件的技术难题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1191个文字,预计阅读时间需要5分钟。
我的前一篇博客提到,在我们公司的项目restful框架中,需要用到到底层的DLL+C++库。经过测试验证,最终选择采用JNA方法来调用DLL库。之后,基于框架在IDEA中的jetty服务中调试成功,但部署到后出现问题。
我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLL C++库,最后经过测试验证结果选择采用JNA方法来调DLL库。
之后基础框架在IDEA中的jetty服务中调试成功,但是在部署到Tomcat上时出现了无法加载DLL库的状况,只能现学现卖了。
一. 把DLL文件放在Tomcat下的方法:
在Tomcat中加载dll,供其它接口调用:
在Tomcat目录根下新建一个文件夹,这里就叫DLL吧,<tomcat_home>/DLL;
把需要用到的dll放入新建的DLL目录下;
编辑<tomcat_home>/conf/catalina.properties,在common.loader后面追加${catalina.home}/DLL;
编辑<tomcat_home>/bin/目录下的catalina.bat,在rem Copy CATALINA_BASE from CATALINA_HOME if not defined的段落中增加如下语句:
set LD_LIBRARY_PATH=%CATALINA_BASE%\DLL
set JAVA_OPTS=-Djava.library.path=%CATALINA_BASE%\DLL%JAVA_OPTS%
保存重新启动Tomcat,deploy war即可。
本文共计1191个文字,预计阅读时间需要5分钟。
我的前一篇博客提到,在我们公司的项目restful框架中,需要用到到底层的DLL+C++库。经过测试验证,最终选择采用JNA方法来调用DLL库。之后,基于框架在IDEA中的jetty服务中调试成功,但部署到后出现问题。
我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLL C++库,最后经过测试验证结果选择采用JNA方法来调DLL库。
之后基础框架在IDEA中的jetty服务中调试成功,但是在部署到Tomcat上时出现了无法加载DLL库的状况,只能现学现卖了。
一. 把DLL文件放在Tomcat下的方法:
在Tomcat中加载dll,供其它接口调用:
在Tomcat目录根下新建一个文件夹,这里就叫DLL吧,<tomcat_home>/DLL;
把需要用到的dll放入新建的DLL目录下;
编辑<tomcat_home>/conf/catalina.properties,在common.loader后面追加${catalina.home}/DLL;
编辑<tomcat_home>/bin/目录下的catalina.bat,在rem Copy CATALINA_BASE from CATALINA_HOME if not defined的段落中增加如下语句:
set LD_LIBRARY_PATH=%CATALINA_BASE%\DLL
set JAVA_OPTS=-Djava.library.path=%CATALINA_BASE%\DLL%JAVA_OPTS%
保存重新启动Tomcat,deploy war即可。

