我正在尝试在Windows上使用OpenCV 2.4.9和Eclipse。我在本教程http://docs.opencv.org/trunk/doc/tutorials/introduction/java_eclipse/java_eclipse.html中设置了Eclipse,但是当我clik Run时,我收到了这条消息:
Exception in thread "main" java.lang.UnsatisfiedLinkError: F:\opencv\build\java\x86\opencv_java249.dll:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at pl.forbot.test.Hello.main(Hello.java:11)
代码:
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() );
}
}
我只找到了类似“线程中的异常”主题“java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java246”的答案,但它没有用。我是Java新手,请帮助我。
答案 0 :(得分:0)
<强> How to deal with the UnsatisfiedLinkError 强>
首先,我们必须验证System.loadLibrary
方法中传递的参数是否正确以及库实际存在。请注意,不需要扩展库。因此,如果您的库名为SampleLibrary.dll,则必须将SampleLibrary
值作为参数传递。
此外,如果您的应用程序已加载库并且应用程序尝试再次加载它,则JVM将抛出UnsatisfiedLinkError。此外,您必须验证本机库是否存在于应用程序的java.library.path或PATH环境库中。如果仍然找不到库,请尝试提供System.loadLibrary方法的绝对路径。
要执行应用程序,请使用-Djava.library.path参数显式指定本机库。例如,使用终端(Linux或Mac)或命令提示符(Windows),通过发出以下命令来执行您的应用程序:
java -Djava.library.path= "<path_of_your_application>" –jar <ApplicationJAR.jar>
unsatisfiedLinkError的一个例子
public class UnsatisfiedLinkErrorExample {
// Define a method that is defined externally.
native void CFunction();
// Load an external library, called "clibrary".
static {
System.loadLibrary("clibrary");
}
public static void main(String argv[]) {
UnsatisfiedLinkErrorExample example = new UnsatisfiedLinkErrorExample();
example.CFunction ();
}
}