2012-05-07 139 views
13

我正在嘗試爲簡單的NDK項目創建一個.h頭文件。使用Cygwin我瀏覽到myprojectDIR\jni目錄下,然後執行此命令:Javah錯誤android.app.Activity未找到

javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity 

則出現此錯誤消息:

Error: cannot access android.app.Activity 
class file for android.app.Activity not found 

我有內部MyActivity類中的本地方法,所以我試圖創建一個新的類名爲NativeAccess(不擴展android SDK中的任何類),並且它工作正常,.h文件已創建,ndk-構建並在設備上測試成功!

所以我的問題是,我需要我創建的Android活動和服務中的我的本地方法,但我不能這樣做,因爲Javah命令無法從android-sdk本身內部訪問類。請注意,我使用的語言(Windows-7 64位),我有這些環境變量:提前

ANDROID_NDK : C:\Android\android-ndk-r7b 
ANDROID_SDK : C:\Android\android-sdk 
ANT_HOME : C:\ANT\apache-ant-1.8.3 
JAVA_HOME : C:\Program Files\Java\jdk1.7.0_02 
PATH  : %JAVA_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;%ANT_HOME%\bin; (other unrelated stuff) 

感謝

+0

你需要在你使用這個工具的類路徑中包含android平臺的jar(s)。如果你的任務特別簡單,你可以手動創建標題,使用ndk樣本作爲指導。 –

+0

謝謝克里斯,我曾考慮過用javah工具添加android jar(s)的classpth,但是我找不到如何去做。 –

回答

21

嘗試添加到您的類路徑:

-classpath <android-sdk-location>/platforms/android-8.jar 
+0

路徑改變了。現在它必須是'sdk/platforms/android-10/android.jar' – Enyby

14

我發現它,這是怎麼回事:

javah -o com_myproject_MyActivity.h -classpath <android-sdk-location>/platforms/android-8.jar;myprojectDIR\bin\classes com.myproject.MyActivity 
4

在Eclipse中嘗試以下操作,

前往>運行|外部工具|外部工具配置 在程序下通過單擊小圖標創建新配置。

命名它。

位置是:C:\ Program Files文件\的Java \ jdk1.7.0_04 \ BIN \ javah.exe

工作目錄是:$ {workspace_loc:/ My_First_NDK /斌/班}和

參數應該是:-classpath $ {workspace_loc:/ My_First_NDK/bin/classes} -bootclasspath「C:\ adt-bundle-windows-x86-20140624 \ sdk \ platforms \ android-19 \ android.jar」-v -d $ {workspace_loc:/ My_First_NDK/JNI} com.mypackage.ndk.HelloNDK

enter image description here

-1

我發現它,這是怎麼回事:

E:\workspeaceResearch\DAMMADARJNI\src>javah -classpath "E:\Software\sdk\platform 
    s\android-19/platforms/android-8.jar"; -jni com.dammadar.jni.Home_Screen