java的出现给大家开发带来的极大的方便。但是,假如我们有大量原有的经过广泛测试的非Java代码,将它们全部用Java来重写,恐怕会带来巨大的工作量和长期的测试;假如我们的应用中需要访问到特定的设备,甚至是仅符合公司内部信息交互规范的设备,或某个特定的操作系统才有的特性,
实现步骤及相关函数使用
本文将一步步说明在linux平台下如何实现本地共享库与Java协同工作。Hello World程序是目前标准的入门第一步,那么,我也以类似的应用最为样例。
第一步,定义一个 Java 类 -- Hello. 它提供SayHello方法:
此时应注重两点:
1、为要使用的每个本地方法编写本地方法声明,其声明方式与普通Java方法接口没什么不同,只是必须指定 native 要害字,如下所示:
public native void SayHello(String strName);
static
{
System.loadLibrary("hello");
}
public class Hello
{
static
{
try
{
//此处即为本地方法所在链接库名
System.loadLibrary("hello");
}
catch(UnsatisfiedLinkError e)
{
System.err.PRintln
( "Cannot load hello library:/n " +e.toString() );
}
}
public Hello()
{
}
//声明的本地方法
public native void SayHello(String strName);
}
/home/jbuilder/jdk1.3.1/bin/javah Hello
/* DO NOT EDIT THIS FILE -
it is machine generated */
#include
/* Header for class Hello */
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Hello
* Method: SayHello
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_Hello_SayHello
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
#include "Hello.h"
#include
新闻热点
疑难解答