2017-10-07 70 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!

相關問題