本文共 1500 字,大约阅读时间需要 5 分钟。
前言
因为项目需要使用到Java Native Methods,看了《Core Java™ Volume II–Advanced Features, Eighth Edition》12章第1节,按着书中的例子完成了一个简单的例子。
现将过程及结果记录下来,供以后参考。
以下代码是书中的代码。
环境
centos 5.8 x86_64
jdk6 x86_64
eclipse 3.7 x86_64
gcc x86_64
内容
1 新建HelloNative.java文件(默认包,以下同),请注意native关键字
/** * @version 1.11 2007-10-26 * @author Cay Horstmann */ class HelloNative { public static native void greeting(); }
2 编译HelloNative.java文件
javac HelloNative.java
3 生成C头文件
javah HelloNative
生成的文件如下:
HelloNative.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloNative */
#ifndef _Included_HelloNative #define _Included_HelloNative #ifdef __cplusplus extern "C" { #endif /* * Class: HelloNative * Method: greeting * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloNative_greeting(JNIEnv *, jclass);
#ifdef __cplusplus } #endif #endif
4 编写C文件
HelloNative.c
/* @version 1.10 1997-07-01 @author Cay Horstmann */ #include "HelloNative.h" #include <stdio.h>
JNIEXPORT void JNICALL Java_HelloNative_greeting(JNIEnv* env, jclass cl) { printf("Hello Native World!\n"); }
5 编译C文件
gcc -fPIC -I $JAVA_HOME/include -I$JAVA_HOME/include/linux -shared -o libHelloNative.so HelloNative.c
6 编写测试Java类
HelloNativeTest.java
/** * @version 1.11 2007-10-26 * @author Cay Horstmann */ class HelloNativeTest { public static void main(String[] args) { HelloNative.greeting(); }
static { System.loadLibrary("HelloNative"); } }
7 编译Java测试类
javac HelloNativeTest.java
8 运行测试
java -Djava.library.path=. HelloNativeTest
转载地址:http://thyoi.baihongyu.com/