我正在尝试从命令行使用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创建头文件:
是什么导致此故障? :(
最佳答案
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/