2011-10-03 72 views
12

我遇到了麻煩,使用javah生成JNI的C頭文件。android-javah沒有找到我的類

這裏的,而站在<project-dir>\bin目錄我使用的腳本:

javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar com.test.JniTest 

至於回報,我得到:

ERROR: Could not find class file for 'com.test.JniTest'. 

即使類JniTest肯定是\com\test

我在做什麼錯?

回答

18

指定的類路徑只包含android.jar

您還需要包含類的存儲位置。在你的情況下,它是當前目錄,所以你需要使用.(在Windows上用;分開)。調用應該如下所示:

javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest 
+1

剛剛加入,顯然你必須要實際文件的目錄之外。您不能只指定文件的名稱。 – L7ColWinters

+0

錯誤:無類指定errror不能得到裏面android.jar –

10

您應該將目錄更改爲<project-dir>\bin\classes;然後,運行以下命令:

javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest 


我使用下面的命令文件來生成標題:我的桌面上 jHdr.cmd

@echo on 
SET PLATFORM=android-8 
SET ANDROID_SDK_ROOT=C:\Android\android-sdk 
SET PRJ_DIR=D:\Workspaces\sqLite\raSQLite 
SET CLASS_PKG_PREFIX=ra.sqlite 
cd %PRJ_DIR%\bin\classes 
javah -classpath %ANDROID_SDK_ROOT%\platforms\%PLATFORM%\android.jar;. %CLASS_PKG_PREFIX%.%~n1 
pause 


調整變量,以您的需求...
將此文件放在您的桌面上,然後將您的.java文件從eclise拖拽到jHdr.cmd,結果在%PRJ_DIR%\ bin \ classes目錄下

16

如果你是在Linux或Mac操作系統,使用":"classpath而不是";"字符分隔目錄:例:

javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest 
+0

那:在linux中救了我:P – Sundeep1501