0

我正在尝试使用命令行中的 javah 工具和 windows 7 操作系统上的 eclipse 上的外部工具配置来创建头文件,但它不起作用。

我的代码是:

package mypackage;
public class HelloWorld {
    private static String HelloWorld;
    private native void print();
    static {
        System.loadLibrary(HelloWorld);
    }
    public static void main(String[] args)
    {
        new HelloWorld().print();
    }
}

我遵循了不同的方法,甚至阅读了 Oracle 的 javah 工具文档,但它们无助于克服这个问题。

我的类文件(HelloWorld.class)和java文件(HelloWorld.java)都在C:\..\eclipse-workspace\Distribution System Process\src\mypackage

但是每当我运行 javah 工具时,它都会给我一个错误:

could not find class file for HelloWorld or mypackage.HelloWorld

我也尝试提供类路径,但没有得到任何头文件。

注意:我的包中有两个类。Frame1.java 是主类,即 Gui,另一个类用于 JNI,名为 HelloWorld.java。我不确定这些类是否重要,但我目前正在研究 HelloWorld.java 以创建一个头文件:

我的项目的屏幕截图

是什么导致了这个失败?:(

4

1 回答 1

0

javah工具需要访问已编译的代码。您必须提供编译类所在的位置。

在这里查看一个非常简单的示例代码:

http://jnicookbook.owsiak.org/recipe-No-001/

如您所见,源代码被编译并存储在其他地方(这里称为target

${JAVA_HOME}/bin/javac -d target java/recipeNo001/HelloWorld.java
${JAVA_HOME}/bin/javah -jni -d c -cp target recipeNo001.HelloWorld

然后,您必须告诉 javah在哪里可以找到这些文件(已编译的Java类)。它是通过-cp论证来完成的。

-d另一方面,Argument将告诉 javah在哪里存储C标头。

于 2017-12-01T07:28:16.567 回答