我在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 topics的read 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是我能想到的唯一方法。
答案 0 :(得分:2)
刚刚在原生Android中实现了我想要的东西。它更容易整合和理解正在发生的事情,代价是牺牲速度并实际上做我想做的事情。
答案 1 :(得分:1)
这是否有效(在-classpath参数的路径前添加分号):
javah -verbose -d jni/ -classpath ;bin/classes uk.co.biogen.SoundBites.activity.SoundBitesActivity