【发布时间】:2015-04-27 23:06:54
【问题描述】:
我正在尝试从终端将 OpenCV 库添加到我的 Java 程序的构建路径中,以便我可以使用 shell 脚本在一堆图像文件上按顺序运行程序。我的项目的 .class 文件位于 Documents/Programming/Ko/bin 中,OpenCV 库的 .jar 文件位于 Documents/Programming/opencv-2.4.10/build /bin。正如这里的许多不同问题所建议的那样,我已经尝试过(在 Ko/bin 目录中):
java -cp "/Users/jordan/Documents/Programming/opencv-2.4.10/build/bin/*:." Ko <image_name>
这会产生以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java2410 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at Ko.main(Ko.java:37)
所以程序在第 37 行遇到了问题。这一行是:
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
我在 Eclipse 中加载 OpenCV 库时遇到问题后添加了这一行,这是根据此处另一个问题的建议,尽管我不确定它的作用或为什么它是必要的。当我尝试注释掉这一行时,我得到了一个类似的错误:
Exception in thread "main" 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:309)
at Ko.main(Ko.java:39)
这次是在第 39 行,从逻辑上讲,这是我第一次调用 OpenCV 库中的方法。
据我所知,我编写java -cp ... 命令的方式与我在此处阅读的问题中对其他人有用的方式相同。如果有人能告诉我哪里出了问题,并能解释为什么在这种特殊情况下调用 System.loadLibrary() 是必要的,而在其他导入库的情况下则不需要,将不胜感激。
【问题讨论】:
标签: java unix opencv terminal classpath