【问题标题】:Android NDK: Eclipse parameter and javahAndroid NDK:Eclipse 参数和 javah
【发布时间】:2012-02-16 14:39:05
【问题描述】:

我花了好几个小时在它上面没有前进一英寸。我已经多次重做该项目,并且没有其他任何东西留在外面。希望这里有人能指出一些方向。

在 Linux Eclipse IDE 面板上 > 运行 > 外部工具 > 外部工具配置:

Name: Dev javah
Tab [main]:
* location: /usr/java/jdk1.6.0_25/bin/javah
* working directory: ${workspace_loc:/Dev/bin}
* Arguments: ??

我试过了:

* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity ${project_classpath:Dev} com.pkgpub.DevActivity

这给了我:

1 error
javadoc: error - Illegal package name: "/home/user/dev/Dev/bin/classes"

也试过了:

* Arguments: -d ${workspace_loc:/Dev/jni} com.dev.DevActivity

这给了...

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

类似于 -

* Arguments: -d ${workspace_loc:/Dev/jni} com.pkgpub.DevActivity

这给了我:

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

但是当我跑步时:

which javah
/usr/bin/which: no javah in (/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/.local/bin:/home/user/bin:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7:/home/user/android-sdks/tools:/home/user/android-sdks/platform-tools:/opt/android/android-ndk-r7)

问题是...该项目未编译是因为 javah 对 Eclipse NDK 不可见,还是由于缺少某些参数详细信息?在这种情况下,如何解决?

谢谢。

【问题讨论】:

    标签: java android android-ndk installation classpath


    【解决方案1】:

    尝试添加

    -classpath bin/classes

    作为javah的参数

    【讨论】:

    • 谢谢..这是你的意思吗? ... * 参数:-d ${workspace_loc:/Dev/jni} com.dev.DevActivity ${project_classpath:Dev/bin/classes} com.pkgpub.DevActivity .....因为它不起作用。
    • 为了清楚起见,实际上我是从 linux 控制台运行 javah 的。通常我指定两个不同的参数 -classpath 和 -bootclasspath。第一个告诉 javah 在哪里寻找你的 java 类,第二个在哪里寻找 java_sdk 类(我将路径作为参数传递给 android jar)。也许我误解了你的问题。编辑:更改参数后,错误仍然相同吗?
    • 执行参数 ... * 参数:-d ${workspace_loc:/Dev/jni} com.dev.DevActivity ${project_classpath:Dev/bin/classes} com.pkgpub.DevActivity .. . 错误更改为: // -- 在“Launching Dev javah”期间发生内部错误。项目路径必须只有一个段。 //
    • -d ${workspace_loc:/Dev/jni} com.dev.DevActivity -classpath ${workspace_loc:/Dev/bin/classes/} com.pkgpub.DevActivity
    • 刚刚尝试了您的建议.. 这里是输出:// 错误:无法访问 com.dev.DevActivity 的 com.dev.DevActivity 类文件,未找到 javadoc: 错误 - com.dev.DevActivity 类未找到。 2 个错误 //
    【解决方案2】:

    Android 专用:

    在 bin 之后使用类,例如 project_location/bin/classes,这在 Linux Fedora 上对我有用

    javah -d /var/www/project/jni/ -classpath /var/www/project/bin/classes/ com.android.TestClass
    

    【讨论】:

      【解决方案3】:

      @BlackBelt - 谢谢你的建议!

      这是起作用的参数,解决了编译过程的javah方面:

      -d ${workspace_loc:/Dev/jni} com.pkgpub.Dev -classpath ${workspace_loc:/Dev/bin/classes/} com.pkgpub.Dev
      

      其中 pkgpub 是包名,Dev 是项目名。值得一提的是,该项目有文件:\src\Dev.java; \jni\Dev.c; \jni\Dev.h; \bin...\pkgpub\Dev.class.

      现在它会生成包含正确内容的文件 jni/com_pkgpub_Dev.h。太棒了!

      但是 ndk-build 仍然没有完全链接,并且没有生成 com_pkgpub_Dev.c 文件。因此,从 Project > Project Build - 消息:

      **** Build of configuration Build (GNU) for project Dev ****
      ndk-build 
      make: *** No rule to make target `jni/com_pkgpub_Dev.c', needed by `obj/local/armeabi/objs/dev/com_pkgpub_Dev.o'.  Stop.
      **** Build Finished ****
      

      从这条消息看来,文件 /jni/Android.mk 中应该缺少某些参数:

      LOCAL_PATH := $(call my-dir)
      include $(CLEAR_VARS)
      LOCAL_CFLAGS    := -DHAVE_INTTYPES_H
      LOCAL_MODULE    := dev
      LOCAL_SRC_FILES := com_pkgpub_Dev.c Dev.c
      include $(BUILD_SHARED_LIBRARY) 
      

      要解决这个问题,只需创建丢失的文件“jni/com_pkgpub_Dev.c”。此文件内容应根据“jni/com_pkgpub_Dev.h”文件中包含的自动生成代码手动制作。

      现在,它可以工作了!

      【讨论】:

      • Arguments:"-d ${workspace_loc:/MyProject/jni} com.myproject.MyActivity -classpath ${workspace_loc:/MyProject/bin/classes}" 当我尝试添加-classpath java.lang.IllegalArgumentException:不是有效的类名:-classpath
      • 它不工作。它给了我一个错误。错误:无法访问 com.NDK.android_example2 的 com.NDK.android_example2 类文件,找不到 javadoc:错误 - 找不到类 com.NDK.android_example2。
      猜你喜欢
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      相关资源
      最近更新 更多