Java Native Methods 例子
来源:互联网 发布:淘宝开店要两个银行卡 编辑:程序博客网 时间:2024/04/27 03:22
前言
因为项目需要使用到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
- Java Native Methods 例子
- java native methods source code
- Native Methods
- writing a java program with Native methods
- JNI,让native callback Java methods
- [原创]java native例子
- JAVA中native方法(实现例子)
- JAVA中native方法(实现例子)
- Java class and methods.
- Calling Java Methods
- Java的Methods-笔记
- Java Reflection - Methods
- java arrays methods
- Java 8 Default Methods
- jni使用--java native 调用c++ boost regex库例子
- Factory methods are static methods that return an instance of the native class(保护CONSTRUCTOR)
- Java-Abstract classes and methods
- call Java methods from C++
- 杭电hdu 3790 最短路径问题 dijkstra
- this application has requested the runtime to terminate it in an unusual way
- MFC框架类、文档类、视图类相互访问的方法
- 安装arm-elf-tools-20030314.sh 的问题的解决方法
- 【C语言】 计数、求和、求阶乘等简单算法
- Java Native Methods 例子
- 重学设计模式 - Strategy模式
- build/envsetup.sh 简介
- wchar_t与char(系统默认编码集,非UTF8)的转换
- tiny210 ubuntu 1104 编译过程
- d-pointer
- 介绍linux中的程序
- arm-elf-tools -20040427.sh 下载及安装问题的解决
- Iphone自定义UITableViewCell