JAVA BUG(一) tomcat发布jfinal项目

1.tomcat的插件,maven install可以把war项目打包;

如果是聚合工程,不要就,只需要打包war就行,剩下的项目打成jar包。 2.放在tomcat的webapp下面,然后,启动tomcat就行。     异常 如果dll文件调用异常 http://blog.csdn.net/zjutzmh/article/details/52069332 部署Tomcat时使用jni和jna调用DLL文件的问题

我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLL C++库,最后经过测试验证结果选择采用JNA方法来调DLL库。之后基础框架在IDEA中的jetty服务中调试成功,但是在部署到Tomcat上时出现了无法加载DLL库的状况,只能现学现卖了。

 

一.        把DLL文件放在Tomcat下的方法:

这一部分摘自:http://blog.csdn.net/wjgnuc/article/details/16876329

在Tomcat中加载dll,供其它接口调用:

在Tomcat目录根下新建一个文件夹,这里就叫DLL吧,/DLL;

把需要用到的dll放入新建的DLL目录下;

编辑/conf/catalina.properties,在common.loader后面追加${catalina.home}/DLL;

编辑/bin/目录下的catalina.bat,在rem Copy CATALINA_BASE from CATALINA_HOME if not  defined的段落中增加如下语句:

set LD_LIBRARY_PATH=�TALINA_BASE%\DLL

set JAVA_OPTS=-Djava.library.path=�TALINA_BASE%\DLL%JAVA_OPTS%

保存重新启动Tomcat,deploy war即可。

(在此感谢这位博主给了我很多启发)

 

二. 把DLL文件放在; line-height: 22.1px;">语句查看都有哪些系统调默认调用的文件路径。Tomcat会在这些目录下寻找要加载的文件、库等。

 

三. 在使用JNA调用DLL时,总是提示无法加载相应的库。把DLL文件放在各种路径下都不起作用。无奈之下,我换成JNI工具尝试了一下,结果提示Can't load IA 32-bit .dll on a AMD 64-bit platform。真相终于浮出了水面,原来是因为JDK和DLL系统不兼容(万万没想到问题出在这里),于是我把DLL重新编译成64位试了一下,成功部署。然后我又换成JNA工具后试了一下也成功部署(早该换成JNI试一下,就是因为JNI使用步骤过于繁琐,所以一直对JNA不死心,结果拖了很长时间),问题解决。

 

四.使用JNA的时候,大多数网上教程中Native.loadLibrary(“DLL name”, classname.class); 中的第一个参数都是相对路径。按照编程经验,这里应该也可以写成绝对路径,例如:

Native.loadLibrary(“C:\Program Files (x86)\Java\jdk1.8.0_51\bin\ DLLname.dll”, classname.class);

我这样试着跑了一下,证明我的猜想是正确的。

 

五. 把DLL放在Tomcat文件夹下的bin文件中也可以找到。Linux下放在 /user/local/bin 中。这是我最后采用的方式。

 

 

如果访问不到,静态资源被拦截了

server.xml需要看一下,是不是path配错了

path="/"再试一下

 
上一篇:springboot-使用jfinal-enjoy模板


下一篇:快来,看看spring有多烂-来自jfinaL的嘲笑