2012-10-06 65 views
3

我正在尝试使用Javah为我的Android NDK应用程序创建一个.h文件。我正在使用cygwin为我做同样的事情。javah错误:无法访问活动

固定的工作区,以我目前的应用程序的bin文件夹,我执行以下命令: -

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar myNDK\bin\classes my.first.NDK.MyNDKActivity 

然而,它始终给以下错误: -

error: cannot access myNDKbinclasses 
class file for myNDKbinclasses not found 
javadoc: error - Class myNDKbinclasses not found. 
error: cannot access my.first.NDK.MyNDKActivity 
class file for my.first.NDK.MyNDKActivity not found 
javadoc: error - Class my.first.NDK.MyNDKActivity not found. 
Error: No classes were specified on the command line. Try -help. 

谁能帮助我在解决这个问题?

我也试图去包含Java文件的文件夹,并执行JAVAH那里,但还是我得到同样的错误: -

error: cannot access MyNDKActivity 
class file for MyNDKActivity not found 
javadoc: error - Class MyNDKActivity not found. 
Error: No classes were specified on the command line. Try -help. 

,不知怎的,描绘了问题是由于一些权限的问题,我猜。

+0

检查出来http:// stackoverflow。com/questions/10483959/javah-error-android-app-activity-not-found/25989225#25989225 –

回答

1

最后,我解决了我的问题。我使用的类路径存在问题。这里去最终解决方案: -

  1. 凡从$PROJECT_DIRECTORY/src

  2. 执行命令的Android编译系统的蚂蚁部分实际上放在bin/classes类文件。因此类路径应该是形式$ PROJECT_DIRECTORY /斌/班

  3. javah -classpath ../bin/classes my.first.NDK.MyNDKActivity

+0

需要一些更多的信息 – droid

+0

你可以只给出完整路径的命令 – droid

2

你似乎在你的类路径中缺少一个分隔符:

javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar:myNDK/bin/classes my.first.NDK.MyNDKActivity 
+0

仍然收到相同的错误错误:无法访问my.first.NDK.MyNDKActivity my.first.NDK的类文件。找不到MyNDKActivity javadoc:error - 找不到类my.first.NDK.MyNDKActivity。 错误:在命令行上没有指定类。尝试 - 帮助。 –

+0

此错误消息会提示您的类路径不正确。从当前目录中,执行'ls myNDK/bin/classes',你能看到你的'my'文件夹吗? – Reimeus

+0

我可以看到“我的”文件夹,但这需要我到我的项目文件夹之外。这可以吗 ?我想我需要留在我的bin文件夹中? –

1

什么的android.jar在您的生产线在做什么?

此外,MyNDKActivity是包含原生签名?

我以这种形式使用JAVAH(其作品对我来说):

javah -d output/ -classpath /home/bod/path/to/eclipse/workspace/project/classes com.myapp.NDKBridge 

其中:

-d输出/是目录收集生成的头

-classpath/home /.../ classes - 您的项目中有班级的文件夹

com.myapp.NDKBridge - 声明的类别名称原生签名。

+0

问题我对这个NDK是全新的。那么,我应该在哪里执行这些命令,在哪个文件夹中?在改变我的命令时,我得到了同样的错误 –

+0

感谢您的帮助(+1)!我有我的班级路径问题 –

1

的,也许它可以工作!添加[-bootclasspath]你的SDK路径的选择。

javah -bootclasspath /home/lmdyyh/development/adt-bundle-linux-x86-20131030/sdk/platforms/android-19/android.jar -classpath bin/classes -d jni com.myndk.Myndk

+0

谢谢!这工作完美。 – Nerdizzle