未找到Javah错误android.app.Activity

未找到Javah错误android.app.Activity,android,android-ndk,java-native-interface,javah,Android,Android Ndk,Java Native Interface,Javah,我正在尝试为一个简单的NDK项目创建一个.h头文件。使用cygwin I浏览到myprojectDIR\jni目录,然后执行以下命令: javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity 然后出现此错误消息: Error: cannot access android.app.Activity class file for android.app.Act

我正在尝试为一个简单的NDK项目创建一个.h头文件。使用cygwin I浏览到
myprojectDIR\jni
目录,然后执行以下命令:

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 x64),我有以下环境变量:

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)

提前感谢

尝试添加到您的类路径:

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

我找到了,事情是这样的:

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

在Eclipse中尝试以下操作:

转到>运行|外部工具|外部工具配置 在程序下,单击小图标创建新配置

随便说说

位置为:C:\Program Files\Java\jdk1.7.0\U 04\bin\javah.exe

工作目录将是:${workspace\u loc:/My\u First\NDK/bin/classes}和

参数是:-classpath${workspace\u loc:/My_First\NDK/bin/classes}-bootclasspath“C:\adt-bundle-windows-x86-20140624\sdk\platforms\android-19\android.jar”-v-d${workspace\u loc:/My_First\NDK/jni}com.mypackage.NDK.HelloNDK


我找到了,事情是这样的:

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

要生成本机头文件
javah
需要:

  • 您的类(通常在
    构建/中间产品/类
    下)
  • Android类(通常在
    $Android\u HOME/platforms/Android-%ver%/Android.jar
    下)
因此,您只需在
-classpath
参数中传递它们

对我来说,主要的挑战是基本上通过这两个选项-你必须使用
作为分隔符,路径必须是绝对的。


因此,您可能会得到这样的结果:
javah-classpath build/intermediates/classes/debug:/platforms/android-26/android.jar com.myproject.MyActivity

您需要在使用此工具的类路径中包含android平台jar。如果您的任务特别简单,您可以使用ndk示例作为指南手动创建标题。谢谢Chris,我确实考虑过使用javah工具添加android jar的classpth,但我找不到如何做到这一点。路径已更改。现在它必须是
sdk/platforms/android-10/android.jar
对于android Studio,请使用以下命令: