java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java300只在测试时

时间:2015-10-24 15:32:56

标签: java opencv testng

我目前正在尝试开发将使用OpenCV库的Java应用程序。我试图使用testNg框架测试我的openCV配置,如下所示:

@Test
public void openCVTest(){
    System.out.println("OpenCV configuration simple test:");
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat m = Mat.eye(3,3, CvType.CV_8UC1);
    System.out.println("OpenCV matrix = " + m.dump());
}

然而,这产生了一个错误:

java.lang.UnsatisfiedLinkError: no opencv_java300 in java.library.path

我找到了多个答案(即使在stackoverflow上),他们都建议使用我尝试的一些解决方案进行错误配置。最后我尝试运行相同的代码,但这次在应用程序中这样:

public class App {
    public static void main( String[] args ){
        System.out.println("OpenCV configuration simple test:");
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat m = Mat.eye(3,3, CvType.CV_8UC1);
        System.out.println("OpenCV matrix = " + m.dump());
    }
}

它的工作方式与之相符。所以我的问题是,为什么这不适用于测试框架?也许某种程度上我还必须配置openCV库进行测试?

1 个答案:

答案 0 :(得分:1)

最后,我在我的测试中使用绝对路径解决了这个问题:

@BeforeClass
public void setUp(){
    System.loadLibrary("lib/x64/opencv_java300");
}

@Test
public void openCVTest(){
    System.out.println("OpenCV configuration simple test:");
    Mat m = Mat.eye(3,3, CvType.CV_8UC1);
    System.out.println("OpenCV matrix = " + m.dump());
}

在我的应用程序中,我正常加载它:

 public class App {

    static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }

    public static void main( String[] args ){
        System.out.println("OpenCV configuration simple test:");
        Mat m = Mat.eye(3,3, CvType.CV_8UC1);
        System.out.println("OpenCV matrix = " + m.dump());
    }

 }