按照网上抄来的javah用法一般出错,今天查了一下午在一篇文章(http://www.ibm.com/developerworks/cn/java/j-jtctips/part6/index2.html) 中看到:“Javah 获取您的 Java 源文件并生成 C 头文件,其中包含您的 Java 代码中所有本机方法的 JNI 存根(stub)。如果您正在生成一个类的 JNI 存根,而且您已经把这个类定义为包的一部分,那么您 必须 指定完全限定的类名。”
现在总结如下:
TestHello.java所在的的目录如下:
E:\rcpworkspace\com.dlut.datasender\test\com\dlut\datasender\communication
TestHello.java
Java代码 

package com.dlut.datasender.communication;
public class TestHello {
static {
System.loadLibrary("TestHello");
}
public static native void hello(String msg);
public static void main(String[] args) {
hello("Hello,Kimm!");
}
} package com.dlut.datasender.communication;
public class TestHello {
static {
System.loadLibrary("TestHello");
}
public static native void hello(String msg);
public static void main(String[] args) {
hello("Hello,Kimm!");
}
}
1.运行cmd命令,cd到TestHello.java所在的目录下面,输入:
Java代码 


javac TestHello.java
javac TestHello.java
没有出错的话会在当前目录(E:\rcpworkspace\com.dlut.datasender\test\com\dlut\datasender\communication)下面生成TestHello.class文件。
2.cd到E:\rcpworkspace\com.dlut.datasender\test\(source folder根目录)
输入: set classpath=E:\rcpworkspace\com.dlut.datasender\test 回车
3.再输入:javah -jni com.dlut.datasender.communication.TestHello 回车
这时候在E:\rcpworkspace\com.dlut.datasender\test下面会生成一名为com_dlut_datasender_communication_TestHello.h的文件
4.重命名com_dlut_datasender_communication_TestHello.h为TestHello.h即可
Java编译与JNI头文件生成指南:包路径与javah技巧
本文详细介绍了如何在Java中正确使用javah生成C头文件,重点在于指定包路径的重要性,并提供了从编写源码到生成头文件的步骤。实践案例涉及了包结构下的类名处理和头文件命名规则。
1069

被折叠的 条评论
为什么被折叠?



