2017-10-07 99 views
0

我正在学习如何使用jni(java native interface),并遵循博客提供的步骤。我已经创建了一个名为“HelloWorld.java”的Java文件,内容如下:当我使用命令java -jni时,出现问题HelloWorld

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文件。

dev的:

jdk8 
windows 10 64bits 

我有谷歌很长一段时间,问我的同学谁是成功使用相同的步骤,但不能与这个问题解决,什么是错在我的笔记本电脑? 任何人都可以帮助我?非常感谢。

+0

“HelloWorld”位于哪个包中? – Mureinik

+0

没有包,只是一个简单的目录,并且在当前目录下运行cmd –

+0

您检查了该文件存在'。\ HelloWorld.class'。你有没有尝试过'javah -jni -cp。 HelloWorld'? –

回答

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!

相关问题