我正在尝试使用Javah为我的Android NDK应用程序创建.h文件。我正在使用cygwin为我做同样的事情。
将工作区修复到当前应用程序的bin文件夹,我执行了以下命令: -
javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar myNDK\bin\classes my.first.NDK.MyNDKActivity
但是,它始终给出以下错误: -
error: cannot access myNDKbinclasses
class file for myNDKbinclasses not found
javadoc: error - Class myNDKbinclasses not found.
error: cannot access my.first.NDK.MyNDKActivity
class file for my.first.NDK.MyNDKActivity not found
javadoc: error - Class my.first.NDK.MyNDKActivity not found.
Error: No classes were specified on the command line. Try -help.
有人可以帮我解决这个问题吗?
我还试图去包含java文件的文件夹并在那里执行javah,但我仍然得到同样的错误: -
error: cannot access MyNDKActivity
class file for MyNDKActivity not found
javadoc: error - Class MyNDKActivity not found.
Error: No classes were specified on the command line. Try -help.
以某种方式描述问题是由于某些权限问题,我猜。
答案 0 :(得分:2)
您似乎在类路径上缺少分隔符:
javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity
答案 1 :(得分:1)
android.jar在你的行中做什么?!
此外,MyNDKActivity是包含原生签名的类?
我在这种形式下使用了javah(它适用于我):
javah -d output/ -classpath /home/bod/path/to/eclipse/workspace/project/classes com.myapp.NDKBridge
其中:
-d output / 是收集生成的标题的目录
-classpath / home /.../ classes - 包含项目中类的文件夹
com.myapp.NDKBridge - 声明原生签名的类名称。
答案 2 :(得分:1)
最后,我解决了我的问题。我使用的类路径有问题。这是最终的解决方案: -
从$PROJECT_DIRECTORY/src
Android构建系统的ant部分实际上将类文件放在bin/classes
中。所以类路径应该是$ PROJECT_DIRECTORY / bin / classes
javah -classpath ../bin/classes my.first.NDK.MyNDKActivity
答案 3 :(得分:1)
也许它可以工作!添加你的sdk路径的选项[-bootclasspath]。
javah -bootclasspath /home/lmdyyh/development/adt-bundle-linux-x86-20131030/sdk/platforms/android-19/android.jar -classpath bin / classes -d jni com.myndk.Myndk