Ubuntu下JNI的使用
来源:互联网 发布:手机翻译软件推荐 编辑:程序博客网 时间:2024/06/07 07:50
本文内容参考如下链接:
http://www.cnblogs.com/bastard/archive/2012/05/17/2506877.html
第一步:
创建一个 Test.java文件
public class Test { //此处定义的便是native方法,在Test.c中实现 native public void doSomeThing(); public static void main (String args[]) { Test test = new Test(); test.doSomeThing(); } static{ //参考文献中采用的System.loadLibrary,在使用时提示找不到lob test,因此采用绝对路径加载库 System.load("/home/wangkuan/Desktop/testjni/libtest.so"); } }
第二步:
生成 Test.h文件
执行命令:javah -jni Test,若提示找不到命令,则安装java
生成Test.h文件,如下
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class Test */#ifndef _Included_Test#define _Included_Test#ifdef __cplusplusextern "C" {#endif/* * Class: Test * Method: doSomeThing * Signature: ()V */JNIEXPORT void JNICALL Java_Test_doSomeThing (JNIEnv *, object);#ifdef __cplusplus}#endif#endif
第三步:
创建Test.c文件
@param JNIEnv:是一个线程相关的结构体,代表了java在本线程的运行环境
@param jobject:指向在此 Java 代码中实例化的 Java 对象 LocalFunction 的一个句柄,相当于 this 指针
#include <stdio.h> #include "Test.h" //这里要包含刚才生成的头文件 JNIEXPORT void JNICALL Java_Test_doSomeThing(JNIEnv * name, jobject o) { printf("HelloWorld"); return; }
第四步:
编译生成libtest.so文件
输入命令:
gcc -fPIC -D_REENTRANT -I/usr/local/java/jdk1.7.0_40/include -I/usr/local/java/jdk1.7.0_40/include/linux -c test.c -o libtest.so-I后面的是java的include文件夹的地址,请根据您具体的java版本以及安装路径作相应的改变。。(我这里是/home/zuo/java/java-1.6/include)
-f后面的PIC表示生成的库中符号是与位置无关的。
-shared表示共享,共享库后缀名为.so。
-o libIntArray.so ,可以理解为编译后生成libIntArray.so库。
第五步:
运行Test.java;
运行结果:Helloworld
0 0
- Ubuntu下JNI的使用
- Ubuntu下使用JNI
- Ubuntu下JNI的简单使用
- Ubuntu下ICTCLAS JNI的使用
- Ubuntu下ICTCLAS JNI的使用
- linux/ubuntu下使用jni的demo
- Ubuntu下JNI的简单使用
- Ubuntu下JNI的简单使用
- ubuntu下jni的简单使用,不使用ndk工具
- ubuntu下jni的简单使用,使用ndk
- Ubuntu下使用Jni开发例子
- Ubuntu下使用Jni开发例子
- Ubuntu下JNI的实现与调用
- ubuntu下的android JNI入门DEMO
- Ubuntu下如何写简单的jni
- Linux下 JNI的使用
- Linux下 JNI的使用
- Linux下JNI的使用
- 网络爬虫中的模拟登陆获取数据(实例教学)
- 阅读郭林《第一行代码》的笔记——第5章 全局大喇叭,详解广播机制
- Linux+tomcat 验证码无法显示
- vim插件和配置
- 禁用系统的Ctrl+Alt+Left/Right(方向键)
- Ubuntu下JNI的使用
- 大数据系列修炼-Scala课程21
- 有趣的算法-旋转字符串
- ci 学习笔记
- 笑笑
- LeetCode 203. Remove Linked List Elements
- git删除分支
- VS2010每次编译都重新编译整个工程的解决方案 仅编译修改过的
- Eclipse打开当前文件所在文件夹--模拟MyEclipse的Open in explorer 功能