【问题标题】:Javah tool error: could not find class file for HelloWorldJavah 工具错误:找不到 HelloWorld 的类文件
【发布时间】:2017-12-01 02:22:44
【问题描述】:

我正在尝试使用命令行中的 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 以创建一个头文件:

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

【问题讨论】:

  • 你的javah 命令行是什么样的?你必须切换到...\eclipse-workspace\Distribution System Process\bin 目录(不是...\src,不是...\src\mypackage,也不是...\bin\mypackage)然后调用javah -jni mypackage.HelloWorld

标签: java eclipse error-handling java-native-interface javah


【解决方案1】:

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告诉 javahC 标头存储在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2016-01-04
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多