2011-10-03 69 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