我正在学习如何使用jni(java本机接口),并遵循博客提供的步骤。我创建了一个名为'HelloWorld.java'的java文件,内容如下:
public class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("HelloWorldImpl");
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
HelloWorld helloWorld = new HelloWorld();
helloWorld.displayHelloWorld();
}
}
然后我执行这个命令:
javac HelloWorld
没有发生错误,但是当我执行此命令时:
javah -jni HelloWorld
然后我收到错误:
can't find class "HelloWorld"
我确信,这个目录有已编译的HelloWorld.class文件。
开发者:
jdk8
windows 10 64bits
我有谷歌很长一段时间,并问我的同学谁成功使用相同的步骤,但无法解决这个问题,我的笔记本电脑出了什么问题? 有人可以帮助我吗?非常感谢。
答案 0 :(得分:1)
首先,确保使用包。它不是强制性的,但它简化了事情。
然后,在编译了java代码之后,请确保使用:
javah -jni -cp . HelloWorld
您也可以在某个位置创建头文件
javah -jni -d c -cp . HelloWorld
# -d c -> header files will be created inside directory called "c"
我还建议将类编译到某个子目录中:
javac -d target HelloWorld.java
# compiled classes will be inside "target" dir
# then, you can call javah this way
javah -jni -d c -cp target HelloWorld
使用超级简单代码查看完整示例:
http://jnicookbook.owsiak.org/recipe-No-001/
与JNI玩得开心!