0

OpenCV Linux バージョンで cmake を実行したところ、必要なすべての共有オブジェクト (ライブラリ) が作成されました。システムで JNI を使用して Java から、これらのライブラリを使用してサンプルの OpenCV プログラムを呼び出すことさえできました。走っていました。しかし、Hadoop Mapper で libhighgui.so.2.0 をロードしようとすると、

System.load("path/to/libhighgui.so.2.0");

エラーが発生します:

UnsatisfiedLinkError:/path/to/libhighgui.so.2.0: libjpeg.so.62: cannot
open shared object file: No such file or directory

興味深いことに、OpenCV 上の CMake はこの libjpeg.so を作成しませんでした。

ヘルプ/解決策はありますか? 前もって感謝します..

編集: 他のライブラリが正常に読み込まれ、共有ライブラリの配布に分散キャッシュを使用しています。

4

1 に答える 1

2

ldd path/to/libhighgui.so.2.0コマンドラインで何を生成しますか?

共有ライブラリは他の共有ライブラリに依存しており、これらの共有ライブラリは実行時に標準ライブラリ パスで使用できません。

ライブラリが依存するすべての .so が、各クラスタ ノードのライブラリ パスにもあることを確認する必要があります (/lib のような標準のシステム パス、または java.library.path システム プロパティを修正する必要があります)。非標準のディレクトリを含める-または、ローカルフォルダーをライブラリパスに追加するため、DistributedCacheも使用してそれらをプッシュします)

于 2012-04-24T14:47:07.477 に答える