jni javah
如何通过javah生成jni头文件
1.javah的使用说明:
-classpath 给出包含native接口的java类的.class文件路径
-d / –o 指定生成的头文件的,-d只给出文件不指定文件名, -o直接指定文件的路径给名字
-jni 给出包含native接口的java类的包名和类名
2.例子
2.1 java文件代码
1 package com.eostek.serialport; 2 3 import java.io.FileDescriptor; 4 5 public class SerialPort { 6 static { 7 System.loadLibrary("serialport_jni"); 8 } 9 10 public static native FileDescriptor open(String path, int baudrate); 11 12 public static native void close(FileDescriptor fd); 13 }2.2 在终端先编译好java文件,然后通过javah生成jni头文件
例如:(路径根据实际项目修改)
javah -classpath ../../../out/target/common/obj/APPS/SerialPort_intermediates/classes/ -o jni/SerialPort.h -jni com.eostek.serialport.SerialPort
执行命令后 在当前目录的jni子目录生成一个SerialPort.h文件,文件内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_eostek_serialport_SerialPort */#ifndef _Included_com_eostek_serialport_SerialPort
#define _Included_com_eostek_serialport_SerialPort
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_eostek_serialport_SerialPort
* Method: open
* Signature: (Ljava/lang/String;I)Ljava/io/FileDescriptor;
*/
JNIEXPORT jobject JNICALL Java_com_eostek_serialport_SerialPort_open
(JNIEnv *, jclass, jstring, jint);/*
* Class: com_eostek_serialport_SerialPort
* Method: close
* Signature: (Ljava/io/FileDescriptor;)V
*/
JNIEXPORT void JNICALL Java_com_eostek_serialport_SerialPort_close
(JNIEnv *, jclass, jobject);#ifdef __cplusplus
}
#endif
#endif