Вы не можете просто использовать public public usb_init ();и затем загрузить собственную библиотеку, подобную этой, JNI не реализован таким образом.
вы используете javah для создания файла .h, который можно использовать для создания библиотеки, которая реализует определенные собственные функции в классе.
javac USBManager
Создает файл класса, который вы используете с javah:
javah USBManager
Это дает файл в этом месте с именем «USBManager.h», который определяет функции для реализации в.so / .dll, которые реализуют соответствующую встроенную функцию.
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class USBManager */
#ifndef _Included_USBManager
#define _Included_USBManager
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: USBManager
* Method: usb_init
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_USBManager_usb_1init
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
Таким образом, вам необходимо экспортировать функцию с именем 'Java_USBManager_usb_1init', которая принимает указанные параметры.
Эта функция можетбыть не более чем:
JNIEXPORT void JNICALL Java_USBManager_usb_1init (JNIEnv *, jobject) {
usb_init();
}
Существует довольно хороший простой пример для блога разработчика Sun , но есть много других примеров.