1

私は JNI を実践していて、共有ライブラリ ファイル Samplelib.so を作成しました。ライブラリ ファイルが作成されるディレクトリを java.library.path に追加しました。Java ファイルを実行すると、java.lang.UnsatisfiedLinkError が発生します。これが私のSample.javaです。

import java.util.*;
public class Sample{
public native int intmethod(int n);
public native String stringmethod(String s);
public static void main(String[] args) {
    try{
    //System.setProperty( "java.library.path", "/home/sudhagar/Project" );
    System.load("libSample");
    Sample sample=new Sample();
    int sq=sample.intmethod(2);
    String text=sample.stringmethod("JAVA");
    System.out.println(sq);
    System.out.println(text);
}
catch(UnsatisfiedLinkError e){
    String property = System.getProperty("java.library.path");
    StringTokenizer parser = new StringTokenizer(property, ";");
    while (parser.hasMoreTokens()) {
    System.err.println(parser.nextToken());
    }
}
}
}

私のSample.cファイル、

#include "Sample.h"
#include <string.h>

JNIEXPORT jint  JNICALL Java_Sample_intmethod
(JNIEnv *env, jobject obj, jint n){
    return n*n;
}

JNIEXPORT jstring JNICALL Java_Sample_stringmethod
(JNIEnv *env, jobject obj, jstring n){
    return n;
}   

void main(){}   

次のコマンドを使用して、共有ライブラリを作成しました gcc -shared -I/.../include -I/.../include/linux -o libSample.so Sample.c

4

1 に答える 1

3

使用する

  System.loadLibrary("Samplelib");

それ以外の

System.load("Samplelib");
于 2012-10-02T18:06:45.830 に答える