【发布时间】:2013-11-18 08:30:21
【问题描述】:
我正在使用 Play Framework 2.1 编写一个使用 OpenCV (2.4.6) 库的 web 应用程序。我在编译 OpenCV 并获得最终的 .jar 时没有遇到任何问题,但是在 the Java/Scala tutorial 中对于 OpenCV 有一句话让我担心:
注意对
System.loadLibrary(Core.NATIVE_LIBRARY_NAME)的调用。这 在使用之前,每个 Java 进程必须只执行一次命令 任何本机 OpenCV 方法。如果你不调用它,你会得到 UnsatisfiedLink 错误。如果您尝试加载,您也会收到错误 已加载的 OpenCV。
我知道 Play Framework 是多线程的,并且线程在请求之间被重用。当产生每个单独的线程时,我有没有办法调用 loadLibrary 函数?还是我误解了线程池的工作原理,我应该在每个请求中加载一次库?这里的正确方法是什么?
[Edit:] 我发现我可以将System.loadLibrary 代码放在全局配置类中,这将使所有线程共享库。该库不是线程安全的,所以我认为如果我这样做只是等待发生的意外......
【问题讨论】:
标签: java c++ scala opencv playframework