我一直在使用 Opencv 2.4.5 和 Java 构建应用程序,现在想分发该应用程序。使用以下内容加载库:
static{
System.loadLibrary("opencv_java245");
}
效果很好。但是,在导出时,从 jar 运行时不起作用:
java -jar build1.jar
opencv_java245.jar 文件作为用户库包含在内,其中连接了本机文件 (libopencv_java245.dylib)。运行从 Eclipse 生成的可执行 jar 时,我得到下面的 UnsatisfiedLinkError,尽管在 Eclipse 中编译/运行良好。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java245 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at com.drawbridge.Main.<clinit>(Main.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:266)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
有人知道将 OpenCV 打包到 jar 中的简单方法吗?
更新:我现在已经用尽了一切。我可以将库添加到我的构建路径中(而不是使用 System.loadLibrary),并且可以在 Eclipse 中使用,但在打包到 jar 中时不能。我什么都试过了。我还检查了我要加载的动态库的类型 - 它是
Mach-O 64-bit x86_64 dynamically linked shared library
看起来它应该可以正常工作。我已经使用 -D64 和 -D32 来测试并得到相同的结果。