我在使用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
。
我做错了什么?
答案 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目录下