【问题标题】:android - javah doesn't find my classandroid - javah 找不到我的班级
【发布时间】:2011-10-03 13:26:40
【问题描述】:

我在使用javah 为 JNI 生成 C 头文件时遇到问题。

这是我在<project-dir>\bin 目录中使用的脚本:

javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar com.test.JniTest

作为回报我得到:

ERROR: Could not find class file for 'com.test.JniTest'.

即使课程 JniTest 肯定在 \com\test 中。

我做错了什么?

【问题讨论】:

    标签: android java-native-interface android-ndk javah


    【解决方案1】:

    您指定的类路径只包含 android.jar

    您还需要包括存储类的位置。在您的情况下,它是当前目录,因此您需要使用 .(在 Windows 上由 ; 分隔)。调用应如下所示:

    javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest
    

    【讨论】:

    • 只是添加,显然你必须在实际文件的目录之外。您不能只指定文件的名称。
    • 错误:没有指定类错误无法进入android.jar
    【解决方案2】:

    如果您使用的是 Linux 或 MAC-OS,请使用 ":" 分隔 classpath 而不是 ";" 字符的目录:示例:

    javah -cp /Users/Android/android-sdk/platforms/android-xy/android.jar:. com.test.JniTest
    

    【讨论】:

    • 那个:在linux中救了我:P
    【解决方案3】:

    您应该将目录更改为<project-dir>\bin\classes;然后,运行以下命令:

    javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar;. com.test.JniTest
    


    我正在使用以下命令文件来生成标头: jHdr.cmd 在我的桌面上:

    @echo on
    SET PLATFORM=android-8
    SET ANDROID_SDK_ROOT=C:\Android\android-sdk
    SET PRJ_DIR=D:\Workspaces\sqLite\raSQLite
    SET CLASS_PKG_PREFIX=ra.sqlite
    cd %PRJ_DIR%\bin\classes
    javah -classpath %ANDROID_SDK_ROOT%\platforms\%PLATFORM%\android.jar;.  %CLASS_PKG_PREFIX%.%~n1
    pause
    


    根据您的需要调整变量 ...
    把这个文件放到你的桌面,然后把你的.java文件从eclise拖到jHdr.cmd,结果在%PRJ_DIR%\bin\classes目录下

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 2012-04-16
      • 2013-05-26
      • 2016-06-01
      • 2013-09-17
      • 2013-10-14
      相关资源
      最近更新 更多