1.建TestAPI.java
public class TestAPI
{
public static void testshow(String msg)
{
testshow0(msg);
}
private static native int testshow0(String msg);
static
{
System.loadLibrary( "TestAPI" );
}
public static void main( String[] args )
{
testshow("Hello!");
}
}
2.javac TestAPI.java
3.javah -jni TestAPI
4.建TestAPI.c
#include
#include "TestAPI.h"
JNIEXPORT jint JNICALL Java_TestAPI_testshow0
(JNIEnv *env, jobject obj, jstring s)
{
const char* szStr = (*env)->GetStringUTFChars( env, s, 0 );
MessageBox(NULL,szStr,"TestAPI",MB_OK);
(*env)->ReleaseStringUTFChars( env, s, szStr );
}
6.cl -Id:/j2sdk1.4.2_09/include -Id:/j2sdk1.4.2_09/include/win32 -LD TestAPI.c user32.lib
7.java TestAPI
你将会看到java调用windwos API的MessageBox所产生的Hello对话框
环境:
JDK+VC
还要看你是在什么平台使用
如果是Solaris平台,
第6步的语句要改成:
cc -G -Id:/j2sdk1.4.2_09/include TestAPI.c -o libname.so
6,7步间再加一步:
setenv LD_LIBRARY_PATH libname.so
如果是win32平台生成.dll库
使用:
cl -I Id:/j2sdk1.4.2_09/include -IId:/j2sdk1.4.2_09/include/win32 -LD TestAPI.c -name.dll
如果单纯地完成从居域网内文件的复制,就不用JNI了,RMI就可以解决;如果要获得本地机器的帐号和密码,我想应该读注册表,必须用JNI了