我开发了一个GWT应用程序,其中包含一些带有JNI的本机库。当我从eclipse测试它时一切正常,但是当我尝试在我的Eclipse服务器上部署它时,它找不到本机库。
我关注this tutorial for JNI and Tomcat
但我注意到它仍然找不到它们。当我从我的服务器应用程序中读取java.library.path
时,它与我启动Tomcat时显示的不同(用set path
显示路径变量)。
我缺少什么想法?
答案 0 :(得分:3)
最简单的答案可能是编辑Tomcat安装的bin/startup
脚本,将java.library.path
更改为将本机库复制到的位置。像
java -Djava.library.path=/path/to/my/libs existing args
如果您正在使用共享托管服务提供商,则需要咨询所有者以确定他们是否允许将本机库加载到容器中,以及是否存在库应该是的特定位置复制。
除此之外,您的开发环境的元问题与您的部署环境不同。理想情况下,您将拥有本地开发计算机上运行的部署配置的精确副本(或尽可能接近)。
答案 1 :(得分:3)
我也一直在努力。最终对我有用的是将JNI库放在tomcat/shared/lib
目录中,并将LD_LIBRARY_PATH
环境变量设置为JNI库的路径。我还设置了JAVA_OPTS
环境变量以包含-Djava.library.path
选项。
顺便提一下Tomcat 7。
如果shared/lib
目录不存在,则需要创建它们。
在我的Linux服务器上,这是它的设置方式:
LD_LIBRARY_PATH=/usr/tomcat/shared/lib:$LD_LIBRARY_PATH
JAVA_OPTS="-Djava.library.path=/usr/tomcat/shared/lib"