首页 > 编程语言 > 详细

java调用linux下的so库

时间:2020-04-27 20:55:18      阅读:48      评论:0      收藏:0      [点我收藏+]

1.编写java类

public class Abc {
    static {
        System.loadLibrary("abc");
    }

    public native static String getAbc();

    public static void main(String s[]) {
        System.out.println(getAbc());
    }
}

终端执行: java Abc.java

再执行:javah Abc 生成Abc.h文件

生成Abc.h的头文件,内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include </usr/local/jdk1.8.0_201/include/jni.h>
/* Header for class Abc */

#ifndef _Included_Abc
#define _Included_Abc
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Abc
 * Method:    getAbc
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_Abc_getAbc
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

编写C文件:

#include <stdio.h>
#include "Abc.h"

JNIEXPORT jstring JNICALL Java_Abc_getAbc(JNIEnv *env, jclass t2)
{
    char *ptr = "hello world";
    
    jstring str ;
    str = (*env)->NewStringUTF(env, ptr);
    
    return str;
}

生成动态库:gcc test.c -fPIC -shared -o libabc.so

将动态库拷贝至: cp libabc.so /usr/local/jdk1.8.0_201/jre/lib/amd64/

然后终端运行 java Abc

[root@sec javatest]# javac Abc.java
[root@sec javatest]# java Abc
hello world

至此 java调用linux下动态库成功

 

java调用linux下的so库

原文:https://www.cnblogs.com/porkerface/p/12789833.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!