这是我目前的设置:
- 我正在添加使用JNI包装器库与本机库接口的功能的Web应用程序(作为.war部署到Tomcat)。
- 包装程序库ssc.dll / so
- 包装的库SSCAPIJNI.dll / so
- 这两个库都嵌入在战争的罐子里
- 在战争中他们在路径/lib/linux/*.so和/lib/windows/*.dll
- 在this helper code中使用this manner,应用程序在我的Windows开发环境和基于Linux的持续集成服务器上成功提取,加载和调用本机代码。
- 我可以通过Eclipse在我的本地开发环境中运行和使用该应用程序
- CI使用ant和junit
成功运行代码测试
但是,当我将战争部署到我的QA服务器时,我得到UnsatisfiedLinkError
。
因为包装器lib和包装的lib是分开的,所以不足以使java库搜索路径正确,操作系统的本机库搜索路径需要在加载包装库时看到包装的库,这似乎是失败的地方发生。我没有选择将两者合并在一起。
虽然我已经成功地绊倒了这个,但目前的障碍是我想要“正确的方式”修复,因此我的问题是:
将依赖于第二个本机库的JNI库部署到Tomcat的方式是什么是正确而强大的方法,以便Tomcat可以看到包装器lib,而后者又可以看到包装的lib?