转自:http://blog.csdn.net/beroy/article/details/4155482
初学java,想使用JNI,在用javah生成头文件时,总是报错找不到类;
看了javah的help,本来是很简单的,但是由于自己概念含糊,所以出错。
javah的命令行帮助:
用法:javah [选项] <类>
其中 [选项] 包括:
-help 输出此帮助消息并退出
-classpath <路径> 用于装入类的路径
-bootclasspath <路径> 用于装入引导类的路径
-d <目录> 输出目录
-o <文件> 输出文件(只能使用 -d 或 -o 中的一个)
-jni 生成 JNI样式的头文件(默认)
-version 输出版本信息
-verbose 启用详细输出
-force 始终写入输出文件
使用全限定名称指定 <类>(例
如,java.lang.Object)。
假如有这样的类:
- package mwic32;
- public class Main {
- /**
- *
- * @param CommPort 串口端口
- * @return
- */
- public native String GetICSN(int CommPort);
- static
- {
- System.loadLibrary("MwIc32.dll");
- }
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- // TODO code application logic here
- }
- }
假如项目目录是:F:/_WorkSpace_/NetBeansProjects,那么编译后生成的class文件会位于F:/_WorkSpace_/NetBeansProjects/MwIC32/build/classes/mwic32
现在希望用JAVAH生成头文件。
javah -classpath F:/_WorkSpace_/NetBeansProjects/MwIC32/build/classes mwic32.Main
也就是说,指定类的路径时,应该以包所在路径为准,而不是具体类所在的子目录