linux上简单的JNI入门实例
2015-11-18 01:09
627 查看
第一步:创建,编译java类UserService
[root@vmhostd jni]# mkdir -p org/test
[root@vmhostd jni]# vi org/test/UserService.java
[root@vmhostd jni]# javac org/test/UserService.java
[root@vmhostd jni]# ll org/test
total 8
-rw-r--r--. 1 root root 832 Nov 7 03:20 UserService.class
-rw-r--r--. 1 root root 380 Nov 7 03:18 UserService.java
UserService.java内容如下:
第二步:生成头文件org_test_UserService.h后面的C程序使用
第三步:创建编译并打包native的C程序
user.c的内容如下:
第四步:配置环境运行
[root@vmhostd jni]# export LD_LIBRARY_PATH=/root/workspace/jni
[root@vmhostd jni]# mkdir -p org/test
[root@vmhostd jni]# vi org/test/UserService.java
[root@vmhostd jni]# javac org/test/UserService.java
[root@vmhostd jni]# ll org/test
total 8
-rw-r--r--. 1 root root 832 Nov 7 03:20 UserService.class
-rw-r--r--. 1 root root 380 Nov 7 03:18 UserService.java
UserService.java内容如下:
package org.test; public class UserService { static{ System.loadLibrary("user"); } public native static void addUser(String name); public native static String getUser(String name); public static void main(String[] args){ UserService us = new UserService(); us.addUser("Jona"); String name = us.getUser("Jona"); System.out.println("NAME:" + name); } }
第二步:生成头文件org_test_UserService.h后面的C程序使用
[root@vmhostd jni]# javah org.test.UserService [root@vmhostd jni]# ll drwxr-xr-x. 3 root root 4096 Nov 7 03:12 org -rw-r--r--. 1 root root 666 Nov 7 03:24 org_test_UserService.h
第三步:创建编译并打包native的C程序
[root@vmhostd jni]# vi user.c [root@vmhostd jni]# gcc -fPIC -D_REENTRANT -I/usr/java/jdk1.8.0_65/include -I/usr/java/jdk1.8.0_65/include/linux -c user.c
[root@vmhostd jni]# gcc -shared user.o -o libuser.so
[root@vmhostd jni]# ll -rwxr-xr-x. 1 root root 4463 Nov 7 03:41 libuser.so drwxr-xr-x. 3 root root 4096 Nov 7 03:12 org -rw-r--r--. 1 root root 666 Nov 7 03:24 org_test_UserService.h -rw-r--r--. 1 root root 465 Nov 7 03:40 user.c -rw-r--r--. 1 root root 1492 Nov 7 03:40 user.o
user.c的内容如下:
#include "org_test_UserService.h" char *name; JNIEXPORT void JNICALL Java_org_test_UserService_addUser(JNIEnv *env, jclass jc,jstring username) { name = (*env)->GetStringUTFChars(env,username,0); fprintf("user added:%s\n",name); } JNIEXPORT jstring JNICALL Java_org_test_UserService_getUser(JNIEnv *env, jclass jc,jstring username) { name = (*env)->GetStringUTFChars(env,username,0); fprintf("user get:%s\n",name); return (*env)->NewStringUTF(env,name); }
第四步:配置环境运行
[root@vmhostd jni]# export LD_LIBRARY_PATH=/root/workspace/jni
<pre name="code" class="cpp">[root@vmhostd jni]# java org.test.UserService NAME:Jona
相关文章推荐
- linux系统初次使用cmake编译boost项目
- 华为服务器安装linux系统--虚拟光驱iso
- linux sed命令详解
- 使用SecureCRT通过ip访问本地VMWare 虚拟机
- Linux——ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台
- MySQL入门完全指南及Linux系统下基本的安装教程
- 一本不错的Linux电子书,可百度搜《Linux就该这么学》。
- 如何在CentOS 7上修改主机名
- linux下的jdk环境变量配置
- linux core学习
- Linux下的分屏显示
- linux下忘记root密码解决方法
- linux中的setuid与seteuid
- Linux下使用LVM
- linux disk
- 1.1.1.3、CentOS
- Linux_文件系统、磁盘分区_RHEL7
- Centos安装smokeping教程
- Linux_LVM、RAID_RHEL7
- 利用scp 在linux之间传输文件