web-dev-qa-db-ja.com

Java.library.pathにopencv_Java300はありません

前もって感謝します..

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ファイルのパスを削除した場合でも、私のプロジェクトは正常に動作しています。

8
Anuj

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");
11
Anuj

以下のようにコマンドライン引数を使用して、メインを持つクラスを呼び出すことができます

Java -Djava.library.path="Folder which contains your dll" ....
4
Kalyan Chavali

私は同じ問題を抱えていましたが、JREシステムライブラリを切り替えることで解決しました。 jre1.8.0_65を使用している場合にのみ問題が発生するようです。 jre1.8.0_25、jre1.8.0.45、jre1.8.0.66ですべてがうまく機能しました

1
nik_kobe

コードから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>
0
LordAldaron

Eclipseでネイティブライブラリを構成したときに問題を解決しました。 OSプラットフォームを参照するライブラリを選択する必要があります。

ここを見てください: openCVをJava buildpath)に追加

0
Jackson William