我有一个打包为 WAR 的 Spring boot 应用程序,它使用 OpenCV 进行一些图像处理,我想在 Elastic Beanstalk(Tomcat 环境)上运行它。有没有办法将它与 native Opencv 库一起打包?
在我具有以下配置的本地计算机上一切正常:
- Tomcat 8 在 Eclipse 中运行,我的应用程序已部署到它。
- 我的电脑上安装了 Opencv 3.1
-
opencv_310.jar
放在src/webapp/WEB-INF/lib
- Opencv 添加到 Java 构建路径 (
path/to/opencv/build/bin
) - 使用 VM 参数运行的 Tomcat
-Djava.library.path=path/to/opencv/opencv/build/lib
这个设置工作正常,我什至可以用 maven clean pakcage
打包它.
但是,如果我想部署到 Amazon Elastic Beanstalk,我不能假设 Opencv 会安装在该机器上(它不会),所以我需要以某种方式将它打包到我的 WAR 文件中,这样一切都是独立的.
当我将我的 WAR 部署到 ELB 时,我总是得到 p>
java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library.path
当使用 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
加载 Opencv 时
我为 archaic versions 找到了一些这方面的教程Opencv,但我似乎无法弄清楚如何轻松地做到这一点。我很乐意提供任何提示,因为我已经坚持了很长时间。
最佳答案
当您运行 tomcat 服务器时,您可以将路径传递给 native 库,这样它们将被预加载,如下所示:
java -Djava.library.path=...
其他方法是将库放入 tomcat 的主 jar(运行 tomcat 的 jar)所在的文件夹中。
关于java - 在 Elastic Beanstalk 上使用 Opencv 运行 Spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35767713/