java - Javah工具错误: could not find class file for HelloWorld

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

我正在尝试从命令行使用javah工具创建头文件,并且在Windows 7 OS上的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创建头文件:

screen shot of my project

是什么导致此故障? :(

最佳答案

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将告诉javah在哪里存储C header 。

关于java - Javah工具错误: could not find class file for HelloWorld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47585729/

相关文章:

java - Jdialog 中的组件未显示

android - 这是什么错误? + LibGDX + super 跳线

java - JVM 崩溃并出现错误 ='Cannot allocate memory' (errno=12)

java - java中Do/While循环的问题

java - 配置 Tomcat 和非 EE Eclipse

exception - 如何处理jbpm工作流程中的错误或异常

javascript - 如何捕获所有 Iframe 中的 JavaScript 错误(使用 window.error)?

c# - Application_Error异常处理,重定向无限循环和CSS加载问题

java - ReactiveCrudRepository 与 R2dbcRepository

Eclipse 4.4 Luna 固定编辑器选项卡