2012-05-07 145 views
13

我正在尝试为简单的NDK项目创建一个.h头文件。使用Cygwin我浏览到myprojectDIR\jni目录下,然后执行此命令:Javah错误android.app.Activity未找到

javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity 

则出现此错误消息:

Error: cannot access android.app.Activity 
class file for android.app.Activity not found 

我有内部MyActivity类中的本地方法,所以我试图创建一个新的类名为NativeAccess(不扩展android SDK中的任何类),并且它工作正常,.h文件已创建,ndk-构建并在设备上测试成功!

所以我的问题是,我需要我创建的Android活动和服务中的我的本地方法,但我不能这样做,因为Javah命令无法从android-sdk本身内部访问类。请注意,我使用的语言(Windows-7 64位),我有这些环境变量:提前

ANDROID_NDK : C:\Android\android-ndk-r7b 
ANDROID_SDK : C:\Android\android-sdk 
ANT_HOME : C:\ANT\apache-ant-1.8.3 
JAVA_HOME : C:\Program Files\Java\jdk1.7.0_02 
PATH  : %JAVA_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;%ANT_HOME%\bin; (other unrelated stuff) 

感谢

+0

你需要在你使用这个工具的类路径中包含android平台的jar(s)。如果你的任务特别简单,你可以手动创建标题,使用ndk样本作为指导。 –

+0

谢谢克里斯,我曾考虑过用javah工具添加android jar(s)的classpth,但是我找不到如何去做。 –

回答

21

尝试添加到您的类路径:

-classpath <android-sdk-location>/platforms/android-8.jar 
+0

路径改变了。现在它必须是'sdk/platforms/android-10/android.jar' – Enyby

14

我发现它,这是怎么回事:

javah -o com_myproject_MyActivity.h -classpath <android-sdk-location>/platforms/android-8.jar;myprojectDIR\bin\classes com.myproject.MyActivity 
4

在Eclipse中尝试以下操作,

前往>运行|外部工具|外部工具配置 在程序下通过单击小图标创建新配置。

命名它。

位置是:C:\ Program Files文件\的Java \ jdk1.7.0_04 \ BIN \ javah.exe

工作目录是:$ {workspace_loc:/ My_First_NDK /斌/班}和

参数应该是:-classpath $ {workspace_loc:/ My_First_NDK/bin/classes} -bootclasspath“C:\ adt-bundle-windows-x86-20140624 \ sdk \ platforms \ android-19 \ android.jar”-v -d $ {workspace_loc:/ My_First_NDK/JNI} com.mypackage.ndk.HelloNDK

enter image description here

-1

我发现它,这是怎么回事:

E:\workspeaceResearch\DAMMADARJNI\src>javah -classpath "E:\Software\sdk\platform 
    s\android-19/platforms/android-8.jar"; -jni com.dammadar.jni.Home_Screen