【问题标题】:javah error : cannot access activityjavah 错误:无法访问活动
【发布时间】:2014-01-13 21:36:20
【问题描述】:

我试图使用 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.

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

【问题讨论】:

标签: android android-ndk javah


【解决方案1】:

您的类路径中似乎缺少分隔符:

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity

【讨论】:

  • 仍然收到相同的错误错误:无法访问 my.first.NDK.MyNDKActivity 的 my.first.NDK.MyNDKActivity 类文件,找不到 javadoc:错误 - 找不到类 my.first.NDK.MyNDKActivity .错误:没有在命令行上指定类。试试 -help。
  • 此错误消息表明您的类路径不正确。从当前目录,做ls myNDK/bin/classes,你能看到你的my文件夹吗?
  • 我可以看到“我的”文件夹,但这会将我带到我的项目文件夹之外。那样行吗 ?我想我需要留在我的 bin 文件夹中?
  • 感谢您的帮助(+1)!我的课程路径有问题
【解决方案2】:

android.jar 在你的行中做什么?!

另外,MyNDKActivity 是包含 native 签名的类吗?

我以这种形式使用了 javah(它对我有用):

javah -d output/ -classpath /home/bod/path/to/eclipse/workspace/project/classes com.myapp.NDKBridge

地点:

-d output/是收集生成头文件的目录

-classpath /home/.../classes - 项目中包含类的文件夹

com.myapp.NDKBridge - 声明 native 签名的类的名称。

【讨论】:

  • 我对这个 NDK 完全陌生。那么,我应该在哪里执行这些命令,在哪个文件夹中?在更改我的命令时,我也遇到了同样的错误
  • 感谢您的帮助(+1)!我的课程路径有问题
【解决方案3】:

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

  1. 在哪里执行来自$PROJECT_DIRECTORY/src的命令

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

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

【讨论】:

    【解决方案4】:

    也许它可以工作!在您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 2013-09-27
      • 2023-03-21
      相关资源
      最近更新 更多