4

ネイティブ メソッドを呼び出してライブラリをロードしようとしている Java クラスがあります。

import java.io.UnsupportedEncodingException;

public class Main {

    public static native String getMyString(String s);

    /**
     * @param args
     * @throws UnsupportedEncodingException
     */
    public static void main(String[] args) throws UnsupportedEncodingException {
        // TODO Auto-generated method stub
        // System.out.println("here!");

        String s2 = getMyString("string text");
        for (Byte b : s2.getBytes("UTF-8")) {
            System.out.print(b);
            System.out.print(",");
        }

    }

    static {
        System.loadLibrary("mylib.so");
    }

}

「mylib.so」は、Main.class があるディレクトリにあります。

実行するjava Mainと、次の例外が発生します。

Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylib.so in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at Main.<clinit>(Main.java:24)

これを機能させるには何を変更する必要がありますか?

ライブラリのフルパスを設定しようとしましたが成功しませんでした

4

4 に答える 4

8

以下をせよ:

  • System.loadLibrary("mylib"); を使用します。
  • mylib.so を libmylib.so にコピーします。
  • java -Djava.library.path=/root/ Main を実行します。
于 2012-08-02T18:33:03.227 に答える
1

so をライブラリ パスに追加する必要があります: -Djava.libarary.path= (これは java コマンドにあります)。

Eclipse から実行する場合: Eclipse の起動時に (オーバーライドする代わりに) ネイティブ ライブラリを "java.library.path" に追加する方法

于 2012-08-02T18:36:54.410 に答える
-6

Reimeusが答えたように。または、 System.load("/Library/Path/libsample.so"); を使用できます。

于 2012-08-21T12:28:03.147 に答える