android - javah doesn't find my class

岁酱吖の 提交于 2020-01-09 07:15:07

问题


I am having troubles generating the C header file for JNI using javah.

Here's the script I use while standing in the <project-dir>\bin directory:

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

As return I get:

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

Even though the class JniTest certainly is in \com\test.

What am I doing wrong?


回答1:


You specify the classpath to contain only android.jar.

You also need to include the location where your classes are stored. In your case it is the current directory, so you need to use . (separated by ; on Windows). The invocation should look like this:

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



回答2:


If you are on Linux or MAC-OS, use ":" to separate the directories for classpath rather than ";" character: Example:

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



回答3:


You should change the directory to <project-dir>\bin\classes; then, run the following command:

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


I'm using the following command file to generate headers: jHdr.cmd on my desktop:

@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


adjust variables to your needs ...
put this file on your desktop, then drag you .java file from eclise to jHdr.cmd, result is under %PRJ_DIR%\bin\classes directory



来源:https://stackoverflow.com/questions/7635624/android-javah-doesnt-find-my-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!