2016-03-03 81 views
0

我将Spring引导应用程序打包为使用OpenCV进行某些图像处理的WAR,并且我想在Elastic Beanstalk(Tomcat环境)上运行该应用程序。有没有办法如何与原生Opencv库打包?在Elastic Beanstalk上使用Opencv运行Spring引导

一切都在我的本地机器在那里我有以下配置上工作的罚款:

  • Tomcat的8 Eclipse内与部署到它在我的应用程序中运行。
  • opencv的3.1安装在我的电脑上
  • opencv_310.jar放在src/webapp/WEB-INF/lib
  • opencv的加入到Java构建路径(path/to/opencv/build/bin
  • 的Tomcat与VM参数运行-Djava.library.path=path/to/opencv/opencv/build/lib

这种设置工作正常,我甚至可以用maven clean pakcage进行包装。但是,如果我想要部署到Amazon Elastic Beanstalk,我不能假定Opencv将安装在该机器上(它不会),所以我需要以某种方式将它打包到我的WAR文件中,遏制。

当我部署我的战争ELB,我总是

java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library.path 

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

加载opencv的时候我发现这方面的一些教程的OpenCV archaic versions,但我似乎无法弄清楚如何轻松做到这一点。我会很高兴提供任何提示,因为我一直坚持这个很长一段时间。

回答

0

我使用这个优秀的Github project解决了这个问题,它提供了OpenCV与本地库打包的Java绑定,并作为Maven依赖项提供。

也有这个项目,更先进的最新版本的OpenCV这我可能要切换到较新fork。它支持OpenCV 2.4.10,这是从3.1版本开始的一种退步,但它完全符合我对它的期望。

0

当您运行Tomcat服务器,你可以传递的路径,本地库,所以他们将被预装,像这样:

java -Djava.library.path=... 

其他的办法是把图书馆到该文件夹​​,其中主tomcat的jar(你运行tomcat的jar)是。

+0

我在我的机器上安装我的库时正在做localhost。你能否提供一个示例设置如何在未安装opencv的情况下在弹性beanstalk上执行此操作(将本机库置于war文件中以及如何引用它)。我可以;吨似乎得到这一步的权利...... – Smajl

+0

你不应该把本机库投入战争(如果你不使用某些库提取它们并动态加载,例如用birdJ),你可以将它们作为参数给tomcat运行的虚拟机,或者你可以把它们放到tomcat运行的jar文件所在的文件夹中。 –

+0

但有没有办法打包和部署应用程序,所以它不依赖于本机库?我不确定如何在ELB上处理这个问题...... – Smajl

相关问题