使用JNI调用本地库,结果显示可以找不到方法.
下面是代码:
public class JNISample {
public native int intMethod(int n);
public static void main(String[] args) {
System.loadLibrary("Sample");
                JNISample sample = new JNISample();
                int square = sample.intMethod(5);
                System.out.println("intMethod: " + square);
        }
}
javah JNISample 生成 JNISample.c 生成JNISample.h#include <jni.h>
/* Header for class JNISample */#ifndef _Included_JNISample
#define _Included_JNISample
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_JNISample_intMethod
  (JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif编辑JNISample.c:
#include <jni.h>
#include "JNISample.h"
JNIEXPORT jint JNICALL Java_JNISample_intMethod(JNIEnv *env, jobject obj, jint num)
{
return num * num;
}
void main(){}在linux 下编译:
JAVA_HOME="/usr/java/jdk1.4"
gcc -fpic -c JNISample.c      生成JNISample.o
gcc -shared -Wl,-soname,JNISample.o -o libSample.so 
生成libSample.so
export   LD_LIBRARY_PATH="/root/shanch/basis/build/linux-x86-suse"
指定库路径
运行:
java JNISample结果:
Exception in thread "main" java.lang.UnsatisfiedLinkError: intMethod
        at JNISample.intArrayMethod(Native Method)
        at JNISample.main(JNISample.java:7)
没有说找不到Sample库,应该是可以装载的
可是为什么找不到方法呢??百思不得其解 希望各位大虾不吝赐教
(一直没怎么上,积分有点少,但这是我的全部积分了 希望不要因为几点积分而抹杀了一个人的求知欲)

解决方案 »

  1.   

    https://www6.software.ibm.com/developerworks/education/j-jni/
      

  2.   

    应该是libSample.so路径得问题 
      

  3.   

    “https://www6.software.ibm.com/developerworks/education/j-jni/“
    我就是根据这教程写的,谁知道出现这种问题。“应该是libSample.so路径得问题“
    如果是libSample.so路径不正确,应该会报找不到 Sample 这个库文件,但是现在已经不是找不到库,而是找不到方法 
      

  4.   

    可能是生成的libSample.so文件有问题