【トラブル】【Java】OpenCV のトラブルシューティング

■ UnsatisfiedLinkErrorが発生する

 * 以下の「発生環境」において、UnsatisfiedLinkErrorが発生
 * 発生箇所は、「System.loadLibrary(Core.NATIVE_LIBRARY_NAME);」実行時である

 発生環境

 * Java1.8
 * Eclipse nano
 * OpenCV v2.4.14

エラー内容

Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java2414 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.sample.Main.main(Main.java:20)

解決案

(1) 以前、使用していた別バージョンのOpenCVを使用していた場合 
 * EclipseのJarが古いままでインポートしていたので、
   インポートしているJarを新しいJarに置き換えた
 * 古いバージョンはできれば削除する

【補足】

 Core.NATIVE_LIBRARY_NAMEの内容は、"opencv_java2413"となっている
これは、dllファイル名となっている。
しかし、ファイル名にはバージョン名(opencv_...2413の"2413"部分)が含まれているので
使用するdllとjarのバージョンは合わせなくてはならない。

(2) (1)でもダメな場合

[1] EclipseのPackage Exploreにおいて、対象のプロジェクトを右クリックし、
    [Propaties]-[Java Build Path]-[Libraries]で対象のOpenCVのJarを展開し
    [Native Library Location: (None)]を選択し、「Edit」ボタン押下

[2] 「Location Path:」欄に、OpenCVのdllファイル(例「opencv_java2414.dll」)までのパスを入力し
    (例「C:\work\opencv\build\java\x64」「C:\work\opencv\build\java\x86」)
    「OK」ボタン押下

[3] 「OK」ボタン押下

 参考文献
http://stackoverflow.com/questions/12840758/opencv-java-exception

関連記事

OpenCV ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/06/27/234046