2011-01-11 4 views
2

JavaとOpenCLを使用するプログラムをセットアップしようとしています。私はJOCLのバインディングを使用しています。ここで私はアリからビルドするとき、私は取得エラーです:java.lang.UnsatisfiedLinkError、解決できません

Error while loading native library "JOCL-linux-x86_64" with base name "JOCL" 
Operating system name: Linux 
Architecture   : amd64 
Architecture bit size: 64 
Stack trace: 
java.lang.UnsatisfiedLinkError: no JOCL-linux-x86_64 in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
    ... 
    ... 

ここでは私の.bashrcの設定です:

export PATH=.:/bin:/usr/bin:/usr/local/bin://home/djkashta/Desktop/bp-trunk/app/BlueprintCore/scripts:/usr/java/jdk1.6.0_23/bin

export LD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/lib:/usr/local/lib:/usr/local/cuda/computeprof/bin:/home/djkashta/Desktop/bp-trunk/bundles/CopperShark/native/linux/2.6.28/x86_64/:/usr/java:/usr/java/jdk1.6.0_23/bin/java:/usr/java/jdk1.6.0_23:/usr/java/jdk1.6.0_23/bin:/usr/lib/jvm

export LD_PRELOAD=/usr/java/jdk1.6.0_23/jre/lib/amd64/libjsig.so

export JDK_HOME=/usr/java/jdk1.6.0_23

export JAVA_HOME=/usr/java/jdk1.6.0_23 export ANT_HOME=/opt/apache-ant-1.7.1

なぜこの問題があるのか​​分かりません。私はこのRedHatマシンのような設定の私のUbuntuマシンでこれを取得しません。 libJOCL-linux-x86_64.soは、LD_LIBRARY_PATH 'の1つに存在します。私がJavaを使っていると、私は/usr/java/jdk1.6.0_23/bin/java

アイデアがありますか?私は立ち往生しています...

+1

$ LD_LIBRARY_PATHについてのメモとして、私はいつもファイルを/etc/ld.so.conf.dに追加してから 'ldconfig'を実行することを好みます。 – trojanfoe

+0

ライブラリをロードする前に 'System.getProperty(" java.library.path ")'を印刷すると表示される内容は? – gabuzo

+0

私のアプリケーション内のディレクトリではありません。私が気づいていないいくつかのコードやプロジェクトの設定は、おそらくそれを次のように設定しています:java.library.path:/ home//Desktop/bp-trunk/app/BlueprintCore/nativelib – smuggledPancakes

答えて

3

LD_LIBRARY_PATHとjava.library.pathは似ていますが、同じではありません。コマンドラインであなたのライブラリが置かれている場所に-Djava.library.pathを設定してください。

または、ロード直前のSystem.out.println(System.getProperty( "java.library.path"))ライブラリは - そのパスが何であるかを見るために...

+0

システムの提案をありがとう。 out.println(System.getProperty( "java.library.path"))。私は自分のアプリケーションが別の場所で自分のネイティブライブラリを探していることを認識しませんでした。今、エラーはなくなっています!もう一度おねがいします:) – smuggledPancakes

+0

問題はありません - BTW - LD_LIBRARY_PATHとjava.library.pathの違いは、Javaがロードするライブラリには、順番にロードする必要があるいくつかの依存ライブラリがある場合に最も顕著です。 java.library.pathは効果がありません。あなたは明示的な場所から手でライブラリをロードすることができます(ただし、これはもっと複雑なユースケースに最適です)。 – time4tea

+1

私の無知を許してください。しかし、誰かが問題をどのように解決したか、それを動作させるにはjava.library.path? JOCLにはJARファイルのみが含まれていますが、これらのライブラリはおそらくこれらのライブラリを深く含んでいますが、どのパスから供給されるかはわかりません。 – user1111929

関連する問題