Linux下jni 调用 小例子
来源:互联网 发布:淘宝宝贝无法上架 编辑:程序博客网 时间:2024/06/03 04:53
先创建一个Java Project ,然后创建一个类HelloWorld
public class HelloWorld {
public native void sayHello();
static {
System.loadLibrary("HelloWorld");
}
public static void main(String[] args){
(new HelloWorld()).sayHello();
}
}
javac HelloWorld.java 生成.class文件
javah -jni HelloWorld 生成HelloWorld.h内容如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
在同一目录下建HelloWorld.c文件,内容如下:
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
(JNIEnv *env, jobject obj){
printf("HelloWorld!!!");
}
注意修改一下函数的参数列表
下面生成.so文件
gcc -fPIC -shared -I /usr/lib/jvm/jdk8/include -I /usr/lib/jvm/jdk8/include/linux -o libHelloWorld.so HelloWorld.c
其中-I后面跟的是jni.h和jni_md.h文件的路径 不加的话会报错,表示没有找到jni.h和jni_md.h
生成.so之后 执行java HelloWorld
可能会报错,so文件不在library路径下
这时候设置一下LD_LIBRARY_PATH 命令 export LD_LIBRARY_PATH=/home/hana/lib (这个路径可以根据自己需要设置,或者自己创建这样一个文件夹,专门放置so文件)
把so文件拷贝进去
再执行java HelloWorld
就OK了
- Linux下jni 调用 小例子
- Linux下Jni 调用
- Linux下JNI的调用
- JNI入门小例子
- JNI的小例子
- JNI小例子
- jni 调用 例子
- linux下jni调用java代码
- Linux平台使用JNI的例子 Java调用so
- Linux平台使用JNI的例子 Java调用so
- Linux平台使用JNI的例子 Java调用so
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- windows部分消息定义及含义
- 日期与时间函数time.h
- QT编译MySql数据库驱动
- 创建使用序列
- linux下mysql ERROR! MySQL manager or server PID file could not be found!
- Linux下jni 调用 小例子
- Javascript三:元素的innerHTML属性
- ShellExecute快捷键大全
- 日期与时间函数time.h(续)
- windows远程连接
- PAL制视频信号
- JavaScript之匿名函数和闭包
- 通过IOStat命令监控IO性能
- MFC 对话框最大化时控件也随比例最大化或者还原