linux上简单的JNI入门实例

原创 2015年11月18日 01:09:23

第一步:创建,编译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内容如下:

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




版权声明:本文为博主原创文章,未经博主允许不得转载。

JNI简单入门实例

jni简单实例 1.编写带有native声明的方法的java类 新建HelloWorld.java class HelloWorld{     public native ...
  • spyiu
  • spyiu
  • 2012年11月14日 14:48
  • 592

Linux下C++调用Java简单实例(jni)

1. Java端,假设工作目录为/home 1)  z
  • lxf310
  • lxf310
  • 2014年10月15日 16:29
  • 3820

Linux下JNI调用简单实例操作全过程

开发环境:Linux(Ubuntu 11.04) + JDK 7 实例说明:利用JNI调用本地代码的方法来实现一个计算Int数组总和的功能 使用JNI调用本地代码,整个开发流程主要包括以下...

Linux下JNI调用简单实例操作全过程

开发环境:Linux(Ubuntu 11.04) + JDK 7 实例说明:利用JNI调用本地代码的方法来实现一个计算Int数组总和的功能 使用JNI调用本地代码,整个开发流程主要包括以下几个步骤...

Android studio jni简单编程实例

  • 2017年03月16日 08:59
  • 54.27MB
  • 下载

Jni最简单的实例demo

  • 2016年01月07日 22:11
  • 34KB
  • 下载

Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)

关于如何安装配置Cygwin,如何安装ndk网上搜搜一大片,这里不再赘述。下面主要对这个简单的JNI实例的实现,做一个记录。 注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里...

JNI的简单实例

  • 2008年04月16日 10:14
  • 15KB
  • 下载

java jni 入门4 - 访问实例域,静态域

参考:《Java核心技术 卷II:高级特性》第12章 本地方法 ##################################################################...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux上简单的JNI入门实例
举报原因:
原因补充:

(最多只允许输入30个字)