前もって感謝します..
opencv-300.jarを外部ライブラリとして使用するプロジェクトがあります。私はこれをEclipseとnatBeans。で試しました。IDE自体からプロジェクトを実行するとき、両方とも正常に動作します。実行可能(または実行可能)jar。opencv_Java300.dllファイルをソースフォルダーに入れ、メインJavaファイルとその名前を指定
System.loadLibrary("opencv_Java300");
Opencv-300.jarを外部jarライブラリと、メインプログラムに必要な他のすべてのファイルに配置しました。 IDEから実行すると正常に動作しますが、実行可能jarを作成しているときにエラーが表示されます
Exception in thread "main" Java.lang.UnsatisfiedLinkError: no
opencv_Java300 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 CropFaceImage.main(CropFaceImage.Java:27)
プログラム自体にJava.library.pathを与える方法はありますか教えてください。外部ライブラリのopencv_Java300.dllファイルのパスを削除した場合でも、私のプロジェクトは正常に動作しています。
opencvのパスを含むコマンドを渡そうとしましたが、他の方法は見つかりませんでした。どういうわけか私は私の瓶を作成し、それが適切に実行されている何かを試してみました。 opencv_Java300.dllファイルをコピーし、jarファイルの隣にあるディレクトリに配置し、すべてのサポートファイルで同じことを行いました。そのために次のコードを使用しました。
String opencvpath = System.getProperty("user.dir") + "\\files\\";
String libPath = System.getProperty("Java.library.path");
System.load(opencvpath + Core.NATIVE_LIBRARY_NAME + ".dll");
以下のようにコマンドライン引数を使用して、メインを持つクラスを呼び出すことができます
Java -Djava.library.path="Folder which contains your dll" ....
私は同じ問題を抱えていましたが、JREシステムライブラリを切り替えることで解決しました。 jre1.8.0_65を使用している場合にのみ問題が発生するようです。 jre1.8.0_25、jre1.8.0.45、jre1.8.0.66ですべてがうまく機能しました
コードからSystem.loadLibrary("opencv_Java300");
を削除し、build.xmlのクラスパスにjarファイルを追加することで、エラーを修正できました。
<jar destfile="program.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="com.src.program"/>
<attribute name="Class-path" value="opencv-300.jar"/>
</manifest>
</jar>
Eclipseでネイティブライブラリを構成したときに問題を解決しました。 OSプラットフォームを参照するライブラリを選択する必要があります。
ここを見てください: openCVをJava buildpath)に追加 。