2

私は多くの人がこの問題をSOに投稿しているのを見てきました。私はそれらの投稿を読み、提案された方法を試しましたが、残念ながら問題を解決するのに役立ちませんでした。

これが私の問題です:

public class runme {
  static {
    System.loadLibrary("example");
  }

  public static void main(String argv[]) {
    System.out.println(example.fact(4));


  }
}

エラー:

anu@anu-desktop:~/Desktop/swigtest/new$ java runme
Exception in thread "main" java.lang.UnsatisfiedLinkError: no example in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at runme.<clinit>(runme.java:5)
    Could not find the main class: runme. Program will exit.

サンプルライブラリは、 runme.javaと同じパスにあります。なぜこのエラーが発生するのですか?私はUbuntuOSで作業しています。

私がこれを解決するのを助けるどんな助けでも大いに感謝されます。

編集:

ここにファイルを添付しました

4

5 に答える 5

1

java.library.pathライブラリのパスを含めるようにプロパティを設定する必要があります。または、すでにパスにある場所にコピーします。

于 2012-06-13T07:36:36.473 に答える
1

ライブラリ名が実際のシステムライブラリにマップされる方法はシステムに依存するとドキュメントに記載れていますが、私の経験では、相対パスは作業ディレクトリを参照しています(その後、他のすべての定義済みおよびシステム依存のパスをチェックします) 。loadLibrary

作業ディレクトリがわからない場合は、何System.getProperty("user.dir")が返されるかを確認してください。

于 2012-06-13T07:36:47.453 に答える
1

次のようにプログラムを実行してみてください。

$> java -Djava.library.path=/path/to/my/libs runme

どこ/path/to/my/libsを実際に.soファイルがある場所に変更する必要があります。


編集

仮想Ubuntuマシンにインストールopenjdk-6-jdkして、インクルードファイルがどこにあるかを確認しました。

libexample.soあなたの:を取得するためにこれを試してください

$> gcc -fPIC -g -c -Wall example_wrap.c -I/usr/lib/jvm/java-6-openjdk/include -I/usr/lib/jvm/java-6-openjdk/include/linux
$> gcc -shared -o libexample.so example_wrap.o

次に、ファイルが作成されたことを確認します...

今、あなたはただ電話する必要があります

$> java runme

ファイルが作業ディレクトリにある場合、-Djava.library.pathは必要ありません。.so

于 2012-06-13T07:56:59.917 に答える
0

私はUbuntuでこの問題に遭遇し、batファイルを使用して解決しました

export LD_LIBRARY_PATH=$PWD/lib/linux32
./fiji-linux

設定する必要のあるオブジェクトはLD_LIBRARY_PATHで、/ lib/linux32を追加してローカルディレクトリに設定します。次の行は私のプログラムを実行します。

于 2012-06-13T07:42:48.110 に答える
0

共有ライブラリへのパスを次のようにLD_LIBRARY_PATHに追加/追加する必要があります。

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path_to_folder_where_your_shared_library_is
于 2012-06-13T12:49:15.967 に答える