2017-12-26 9 views
0

私はopenbevライブラリで正常に動作するNetbeansに関するプロジェクトを持っています。私の.jarファイルにライブラリを追加するには

私はプロジェクトのプロパティ]> [ファイル名を指定して実行に設定されています:-Djava.library.path="C:\opencv\build\java\x64"

私は、NetBeansでプロジェクトを実行した場合、それは動作します。私は、JARファイルを作成し、CMDからjava -Djava.library.path="C:\opencv\build\java\x64" -jar myjar.jarしようとすると、

しかし、それは私が私のjarファイルを構築するために行方不明です何

java.lang.NoClassDefFoundError: org/opencv/core/Mat

を投げますか? .jarが構築されたディレクトリで

編集

、私はlibと呼ばれるディレクトリを作成し、Iの内側にOpenCVの-300.jarを置く:私はjava -cp "lib/opencv-330.jar;myjar.jar" gui.Clientを実行する場合、それは動作します... がいずれかがありますそのコマンドを実行しないでアプリを実行する方法?完全なパスを提供することにより、

1)ファイルをロードします:

+0

実行可能なjarファイルを作成する必要があります。 – tsolakp

+0

「実行可能な」JARとはどういう意味ですか?私はすでに自分の.jarを持っています –

+0

https://en.wikipedia.org/wiki/JAR_(file_format)#Executable_JAR_files – tsolakp

答えて

0

次の2つの方法でネイティブライブラリファイル(.dllファイル/ Windowsまたは.soの/ Linux)をロードすることができ

System.load("my/full/path/opencv.dll"); 

2)あなたのネイティブファイルは、Javaのライブラリパスの内側に配置されている場合:

System.loadLibrary("opencv"); 

は、第二のケースでは、あなただけ(拡張子なし)あなたのネイティブファイルの名前を提供する必要があることがわかります。

デフォルトのJavaライブラリパスはOSに依存します:

Windowsでは

、それはLinuxのPATH
にマップする、それはOS X上で
をLD_LIBRARY_PATHにマッピングし、それが

た場合をDYLD_LIBRARY_PATHにマッピング

try { 
     System.setProperty("java.library.path","YOUR/PATH"); 
     Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); 
     fieldSysPath.setAccessible(true); 
     fieldSysPath.set(null, null); 
    } catch (Exception ex) { 
     System.out.println("Failed to set Java Library Path: " + ex.getMessage); 
    } 
+0

opencv-300.jarがリンクされていないなど、DLLが正しくロードされていると思います。 - Javaでopencvを使用するには、opencv.dllとopencv.jarを使用する必要があります –

+0

Gradleを使用していますか? –

+0

いいえ、それはちょうど普通のデスクトップスイングアプリケーションです –

関連する問題