4

Maven を使用して、OpenCV コンピューター ビジョン ライブラリの JNI ラッパーに依存するプロジェクトを構築しようとしています。FreeHEP の NAR Maven プラグインを使用して、http: //ubaa.net/shared/processing/opencv/で OpenCV ラッパーを "maven-ize" することができましたが、そのプラグインのドキュメントはやや不足しています。

OpenCV jni プロジェクト (OpenCVJava と呼んでいます) に依存するプロジェクト (imagedetect) を作成できました。imagedetect はコンパイルしますが、すべてのテスト、統合テスト、またはパッケージ ターゲットは失敗し、java.library.path にライブラリが見つからないというエラーが表示されます。

!!! required library not found : no OpenCV in java.library.path
Verify that the java.library.path property is correctly set and 'libcxcore.so', 'libcv.so', 'libcvaux.so', 'libml.so', and 'libhighgui.so' are placed (or linked) in one of your system shared libraries folder

これは特にイライラします。これを解決する唯一の方法は、opencv ライブラリの .nar ファイルを追跡し、それらを手動で抽出し、java.library.path を設定してから、gnaraly Java コマンドを呼び出して実際に実行することです。適切なクラスパス/ライブラリ パスを持つテスト/アプリケーション。これは機能しません。特に、この問題が推移的な依存関係に続く場合はなおさらです。

このビルド/テスト/実行システムをよりクリーンにするにはどうすればよいですか? 私は FreeHEP に固執していませんが、maven を使い続けたいと思っています。これにより、最も一般的なユースケースがはるかに簡単になるからです。

FreeHEP Nar プラグイン: http://java.freehep.org/freehep-nar-plugin/intro.html

4

1 に答える 1

4

私は FreeHEP に詳しくありませんが、テストを実行するために java.library.path を Surefire に設定するのに問題がある場合は、http://buildanddeploy.com/node/14 で例を見つけまし 。を投稿しますが、maven を取得してネイティブ ライブラリをディレクトリにコピーする方法を示しています。私自身、過去に同様のアプローチを使用したことがあります。

また、エラーを見て、それを修正するために LD_LIBRARY_PATH を設定する必要がありましたか? もしそうなら、このセットをmaven内でも取得する必要があります。

これを確実に設定する方法の例を次に示します ( http://docs.codehaus.org/display/MAVENUSER/Projects+With+JNIから): maven-surefire-plugin once target/tmplib java.library.tmpdir target/tmplib

于 2009-05-12T21:42:40.310 に答える