由于System.loadLibrary(Core.NATIVE_LIBRARY_NAME)而导致NoClassDefFound错误

时间:2015-01-21 12:32:01

标签: java android eclipse maven opencv

我正在尝试使用opencv 2.4.9。使用maven ,我有两个文件 - 第一个是maven项目中的java文件,第二个是包含所有opencv导入的java文件,但是这个文件在同一个包中,我正在调用第一个第二个java文件的函数。 这两个文件作为java项目单独运行,但是当我尝试运行完整的maven项目时,它会抛出此错误 - (java.lang.NoClassDefFoundError:org / opencv / core / Core)

并且构建失败。

经过大量研究后我发现问题主要是因为 的的System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 用于加载opencv库。 为了解决这个问题,有一些解决方案可以将 opencv.dll 添加到java文件夹中,但由于我正在使用 os x 10.9.5 ,我没有dll,因为它们在在opencv下构建文件夹,但是如果我们安装了opencv,那么build文件夹就会存在,而我找不到opencv的.dmg文件。我该怎么办?

PS:这是我在SO上的第一篇文章。

5 个答案:

答案 0 :(得分:1)

经过大量的点击和试验后,直接在 System.loadLibrary中指定opencv.dll的路径(" opencv.dll的完整路径")似乎有完成了这个技巧,但在Mac中,问题仍然存在,因为我在Mac中没有任何.dll或.so或.dylib for opencv。

答案 1 :(得分:0)

虽然我从未使用过opencv:

从opencv下载Mac OS X

我想在Mac OS X的opencv包中应该有一个opencv.dll等效的本机库(opencv.jnilib?),并用System.loadLibrary加载它可以解决问题。

有一篇文章介绍如何在Mac OS X上加载本机库。


可能相关:

答案 2 :(得分:0)

这是一个老问题,但还没有回答。对我来说,解决了System.loadLibrary(Core.NATIVE_LIBRARY_NAME)的问题:https://stackoverflow.com/a/35112123

答案 3 :(得分:0)

对于Ubuntu Linux,我遇到了类似的问题,找不到本机库,实际上是libopencv_javaxxx.so(xxx是版本) 它实际安装在/ usr / lib / jni /下,与/ usr / lib / x86_64-linux-gnu /

下安装的其他本机库不同

我对本地库的第一个想法是libopencv_core.so,而且根本没有libopencv.so。

答案 4 :(得分:0)

看看 Unsupported platform in nu.pattern和我对openCV Java on Kotlin的建议答案,其中显示了如何使用nu.pattern.OpenCV.loadShared(); API。