Kevin McKay
Kevin McKay

Reputation: 13

UnsatisfiedLinkError Trying to run OpenCV java code cross compiled

I'm beating my head against a wall here. There are a lot of very similar questions but none exactly on point. I'm sure the answer is staring me in the face.

I'm conducting my first OpenCV cross compile test. I set up OpenCV 3.1.0 in Eclipse on Windows 10. Code there runs fine. From there I created an executable .jar and FTP'd it to a raspberry pi 3 running Jessie.

I installed OpenCV 3.1.0 on the Pi including java support (on the third try). But I continue to get the same error.

Code:

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Hello
{
   public static void main( String[] args )
   {
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      Mat mat = Mat.eye( 3, 3, CvType.CV_8UC1 );
      System.out.println( "mat = " + mat.dump() );
   }
}

Error:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at Hello.main(Hello.java:9)

I've found opencv-java310.jar in /usr/local/share/OpenCV/java

And I have tried at the command line both with and without the -D parameter:

java -jar HelloEx.jar -D java.library.path=/usr/local/share/OpenCV/java

Thanks in advance

Upvotes: 1

Views: 777

Answers (1)

Sergi
Sergi

Reputation: 1015

I'm not sure if you correctly set java.library.path, as in your starting post it is incorrect, please try use it as follows: java -Djava.library.path=/usr/local/share/OpenCV/java -jar HelloEx.jar and you also may check if it was set correctly in your java code by adding the following code (just to debug): System.out.println(System.getProperty("java.library.path"));

Upvotes: 1

Related Questions