Здесь все непросто и запутанно.
Действительно нужно читать много всякой литературы.
Но в кратце примерно следующие (Всегда лучше сначало
представить во что ввязываешься):
1. Пишешь класс на java с native функцией которая будет реализована на C.
//TestNative.java
import java.io.*;
public class TestNative {
public int ID=0 ;
public static void main(String[] argv) {
new TestNative().nativeMethod() ;
}
public native int nativeMethod() ;
static {
System.load("TestNativeLib.so") ;
}
}
Обрати внимание на метод с ключевым словом native,
его и нужно будет реализовать.
2. Компилишь его
javac TestNative.java
3. Создаешь файл заглушку
javah TestNative
При этом создается файл TestNative.h
А вот и он :-)
/*TestNative.h*/
* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestNative */
#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestNative
* Method: nativeMethod
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_TestNative_nativeMethod
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
4. Реализуешь нативный метод
//TestNativeLib.cpp
#include <stdio.h>
#include <jni.h>
#include "TestNative.h"
JNIEXPORT jint JNICALL Java_TestNative_nativeMethod(JNIEnv *je, jobject jo) {
int g = 0 ;
jclass javaClass ;
jfieldID javaFieldID ;
printf("TestNative method is run.\n") ;
//javaClass = je->GetObjectClass(jo) ;
return 123 ;
}
5. Создаешь библиотеку TestNativeLib.so
gcc -c -o TestNativeLib.o TestNativeLib.cpp -I$JAVA_HOME/include/linux -I$JAVA_HOME/include
gcc -shared -o TestNativeLib.so TestNativeLib.o
6. Типа все готово. :-))))