2

这是我目前的设置:

  • Web 应用程序(部署为 Tomcat 的 .war),我正在添加使用 JNI 包装器库与本机库交互的功能。
  • 包装库 ssc.dll/so
  • 包装好的库 SSCAPIJNI.dll/so
  • 两个库都嵌入在战争中的一个罐子里
    • 在战争中,它们位于路径 /lib/linux/*.so 和 /lib/windows/*.dll
  • 这种方式使用此帮助程序代码,应用程序在我的 Windows 开发环境和基于 linux 的持续集成服务器上成功地提取、加载和调用本机代码。
    • 我可以通过 Eclipse 在本地开发环境中运行和使用该应用程序
    • CI 使用 ant 和 junit 成功运行代码测试

但是,当我将战争部署到我的 QA 服务器时,我得到一个UnsatisfiedLinkError.

因为wrapper lib和wrapper lib是分开的,不足以让java库搜索路径正确,OS的native library search path需要在加载wrapper库时看到wrapped library,这似乎是失败的地方。我没有将两者编译在一起的选项。

尽管我在这方面取得了一些成功,但目前的障碍是我想以“正确的方式”解决的问题,因此我的问题是:

将依赖于第二个本机库的 JNI 库部署到 Tomcat 的正确且稳健的方法是什么,这样 Tomcat 可以看到包装器库,而包装器库又可以看到包装的库?

4

0 回答 0