0

我在 Windows 7 上,在 Cygwin 1.7.13 中使用 javah。我目前正在尝试为我的 Android 项目生成原生 C++ 文件的头文件。

在项目的根目录下运行,我正在执行的命令是:

walb@nought /cygdrive/c/Users/walb/stuff/work/workspace/SoundBites
$ javah -verbose -d jni/ -classpath bin/classes uk.co.biogen.SoundBites.activity.SoundBitesActivity

结果是:

error: cannot access uk.co.biogen.SoundBites.activity.SoundBitesActivity
class file for uk.co.biogen.SoundBites.activity.SoundBitesActivity not found
javadoc: error - Class uk.co.biogen.SoundBites.activity.SoundBitesActivity not found.
[ Search Path: C:\Program Files\Java\jdk1.6.0_22\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\sun
rsasign.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\charsets.j
ar;C:\Program Files\Java\jdk1.6.0_22\jre\classes\bin/classes ]
Error: No classes were specified on the command line.  Try -help.

读过大多数主题都表明我的论点是正确的。错误消息中有趣的一点是: -classpath

[ Search Path: C:\Program Files\Java\jdk1.6.0_22\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\sun
rsasign.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_22\jre\lib\charsets.j
ar;C:\Program Files\Java\jdk1.6.0_22\jre\classes\bin/classes ]

该列表中的最后一个路径是C:\Program Files\Java\jdk1.6.0_22\jre\classes\bin/classes,这表明 javah 对参数的解释完全错误。我能想到的唯一可能有帮助的是调用 javah 的另一种方法,但是将其目录添加到 PATH 是我能想到的唯一方法。

4

2 回答 2

2

刚刚在原生 Android 中实现了我想要的。以牺牲速度和实际做我想做的事情为代价,更容易集成和理解正在发生的事情。

于 2012-12-10T13:00:12.277 回答
1

这是否有效(在 -classpath 参数的路径之前添加分号):

javah -verbose -d jni/ -classpath ;bin/classes   uk.co.biogen.SoundBites.activity.SoundBitesActivity
于 2012-05-29T14:02:34.223 回答