android - javah找不到我的班级

时间:2011-10-03 13:26:40

标签: android java-native-interface android-ndk javah

我在使用javah为JNI生成C头文件时遇到了麻烦。

这是我站在<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

我做错了什么?

3 个答案:

答案 0 :(得分:18)

您指定的类路径仅包含 android.jar

您还需要包含存储类的位置。在您的情况下,它是当前目录,因此您需要使用.(在Windows上以;分隔)。调用应该如下所示:

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

答案 1 :(得分:18)

如果您使用的是Linux或MAC-OS,请使用":"分隔classpath而不是";"字符的目录:示例:

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

答案 2 :(得分: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目录下