我试图在Windows 7 OS上从命令行使用javah工具创建头文件,但我一直都失败。
我采用了不同的方法,甚至从oracle阅读了javah工具的文档,但是它们并没有帮助克服这个问题。
我的类文件(hellojni.class
)和Java文件(hellojni.java
)都在D:\
驱动器的根目录中。
但是每当我运行javah工具时,都会给我一个错误:
我也尝试通过提供类路径,但是没有得到任何头文件。
最佳答案
我怀疑问题在于您的类(class)有一个软件包,并且您尝试从带有类文件的目录而不是软件包根来运行命令。
Samhain的示例之所以有效,是因为他的MyClass.java
不包含任何程序包,而我怀疑您的程序包含。
例如,假设我们在c:\src\com\example\MyClass.java
中有以下文件
package com.example;
public class MyClass {
public native void myMethod();
}
转到命令行并执行以下操作:
c:\src\com\example>javac MyClass.java
c:\src\com\example>dir
Directory of C:\src\com\example
2015-02-23 03:17 PM <DIR> .
2015-02-23 03:17 PM <DIR> ..
2015-02-23 03:20 PM 219 MyClass.class
2015-02-23 03:17 PM 84 MyClass.java
c:\src\com\example>javah MyClass
Error: Could not find class file for 'MyClass'.
c:\src\com\example>cd c:\src
c:\src>javah com.example.MyClass
c:\src>dir
Directory of C:\src
2015-02-23 03:18 PM <DIR> .
2015-02-23 03:18 PM <DIR> ..
2015-02-23 03:16 PM <DIR> com
2015-02-23 03:18 PM 449 com_example_MyClass.h
成功!