Linux下java调用.so文件 ——JNI方法(亲测成功)

1.新建java类

  public class Hello
   {
     static
     {
  
       System.loadLibrary("goodluck");
     }
  
     public native static int get();
     public native static void set(int i,String s);
 
     public static void main(String[] args)
     {
          try{
          Hello test = new Hello();
          test.set(10,"5555");
          System.out.println(test.get());
          }catch(Exception ex)
          {
            System.out.println("ssssss");
          }
     }
  }

2.生成Java class对象

javac Hello.java

3.生成头文件

javah Hello

4.编写Hello.c

#include "Hello.h"
   
int i = 0;

JNIEXPORT jint JNICALL Java_Hello_get(JNIEnv *env, jclass jc)
{
  return i;
}

JNIEXPORT void JNICALL Java_Hello_set(JNIEnv *env, jclass jc, jint j,jstring s)
{

char * tsetstr=(char*)(*env)->GetStringUTFChars(env, s, NULL);//注意此处jstring和char *的转换
printf("%s--------\n",tsetstr); 

  i = j;
}

5.生成.o文件

gcc -fPIC -D_REENTRANT -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -c Hello.c

6.生成.so文件 ——libgoodluck.so

gcc -shared Hello.o -o libgoodluck.so

7. 在java类中调用

java Hello

注意:为了让java找到此so,运行:export LD_LIBRARY_PATH=.,将当前目录加入此环境变量。第5步中替换成自己的jdk路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值