我一直在尝试开发一个 Play Framework 应用程序。我在此应用程序中使用 opencv(.jar + native 库)。当我尝试运行应用程序时
play start
命令应用程序运行良好且完美。当尝试使用
play run
它需要访问 opencv 方法,它会收到运行时错误
java.lang.UnsatisfiedLinkError: org.opencv.highgui.Highgui.imread_0(Ljava/lang/String;I)J
at org.opencv.highgui.Highgui.imread_0(Native Method)
at org.opencv.highgui.Highgui.imread(Highgui.java:299)
at com.allspark.scanners.LabelImScanner.readLabel(LabelImScanner.java:39)
at com.allspark.controllers.imageController.uploadLabel(imageController.java:55)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:289)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:289)
然后我尝试在生产模式下运行应用程序,然后一切正常。 我需要知道如何加载 native 库以在开发模式下运行应用程序。 这个问题已经在下面讨论过: https://groups.google.com/forum/#!topic/play-framework/A3cL3dkD70I https://github.com/playframework/playframework/issues/2212 How to include native library (JNI) in play 2.1 RC2?
但不幸的是,对于开发模式应用程序没有任何作用。 我正在使用 play Famework 2.2.0 和 opencv-246。如果有人能够提供支持,那将是很大的帮助。谢谢。 感谢您的帮助
最佳答案
有两种方法:
1. 在你的 play 项目中创建一个/lib 文件夹,然后 play clean 并编译(SBT 会处理所有事情)
2.
cp opencv-2412.jar /your-play-project/target/native_libraries/64bits/
cp ibopencv_java2412.dylib /your-play-project/target/native_libraries/64bits/
然后清理并编译
关于java - 如何加载原生库来玩框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962013/