javah 错误: 找不到 'XX' 的类文件或Exception in thread "main" name: XX.class

来源:互联网 发布:bootstrap 可视化软件 编辑:程序博客网 时间:2024/06/06 02:53

java用JNI时,会用到javah成生.h的头文件,但会报错找不到文件。

你可能打开目录后,明明看到有class文件就是报错找不到文件,是因为javah要先去找class包名。什么意思呢?

上源码吧。

如果你有一个这样的java类:

public class hello{    public static native String init(String umi);

注意这个类没有包名时,那么你要javah生成.h文件的时候,直接shell或者命令提示符到这个java类所在的目录下,用javac hello.java 先生成class文件,就可以看到多了一个hello.class的文件,这时你就可以javah hello生成.h的文件了。生成的.h文件在当前目录,即class文件所在的目录。


如果这个类有包名时,如这样的:

com.company.helloworldproject.Class
public class hello{    public static native String init(String umi);
那么,这个类的完整目录差不多是在这里的:D:\my\app\src\main\java\com\company\helloworldproject\Class, (后面以这个目录为例)这时shell或者命令提示符到你项目的文件夹java目录下,运行javah 包名.类名即 javah com.company.helloworlproject.class.hello就可以直接生成.h文件了,都不用javac先生成class文件。

总结一下:javah生成.h文件时,如果你的java类是有包名时,不应该到class文件所在的目录运行javah命令,而应该在包名的上一个目录运行,即运行:javah 包名+类名.class,生成的.h文件在java目录。

如果java类是没有包名时,javah 直在shell到class文件所在的目录运行:javah 类名.class.

0 0
原创粉丝点击