3

我试图为我的 Android NDK 应用程序使用 Javah 制作一个 .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.

我猜这以某种方式描述了这个问题是由于一些权限问题。

4

4 回答 4

2

您似乎在类路径上缺少分隔符:

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity
于 2012-10-06T14:19:06.367 回答
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 - 声明本机签名的类的名称。

于 2012-10-06T14:37:43.790 回答
1

最后,我解决了我的问题。我使用的类路径有问题。这是最终的解决方案:-

  1. 从哪里执行命令$PROJECT_DIRECTORY/src

  2. Android 构建系统的 ant 部分实际上将类文件放在bin/classes. 所以类路径的形式应该是 $PROJECT_DIRECTORY/bin/classes

  3. javah -classpath ../bin/classes my.first.NDK.MyNDKActivity

于 2012-10-06T15:59:33.157 回答
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

于 2014-01-13T13:36:20.293 回答