簡體   English   中英

Java,線程“主”中的OpenCV異常java.lang.UnsatisfiedLinkError:

[英]Java, OpenCV Exception in thread “main” java.lang.UnsatisfiedLinkError:

我正在嘗試在Windows上的Eclipse中使用OpenCV 2.4.9。 我像本教程中那樣設置Eclipse http://docs.opencv.org/trunk/doc/tutorials/introduction/java_eclipse/java_eclipse.html ,但是當我單擊“運行”時,得到了以下消息:

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的新手,請幫助我。

如何處理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 ();
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM