“在命令行上没有指定类”运行javah时出错

时间:2012-04-07 19:22:20

标签: android-ndk cygwin

我在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.
Most topicsread indicate我已-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是我能想到的唯一方法。

2 个答案:

答案 0 :(得分:2)

刚刚在原生Android中实现了我想要的东西。它更容易整合和理解正在发生的事情,代价是牺牲速度并实际上做我想做的事情。

答案 1 :(得分:1)

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

javah -verbose -d jni/ -classpath ;bin/classes   uk.co.biogen.SoundBites.activity.SoundBitesActivity