我试图在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

成功!

10-01 22:38